Menu Docs
Página inicial do Docs
/ /
Atlas Device SDKs
/ /

Dados personalizados do usuário - Flutter SDK

Nesta página

  • Antes de começar
  • Ler os dados de usuário personalizados de um usuário
  • Gravar dados de usuário personalizados com uma Função de Realm

Você pode armazenar dados personalizados arbitrários sobre seus usuários com o Atlas App Services. Por exemplo, você pode armazenar o idioma preferido do usuário, a data de nascimento ou o fuso horário local. Antes de escrever e ler esses dados, você deve habilitar os dados de usuário personalizados no backend. Para saber mais, consulte Habilitar dados de usuário personalizados.

Importante

Atualmente, você só pode ler dados de usuário personalizados com o Flutter SDK. Em uma atualização futura do SDK, você também poderá gravar dados de usuário personalizados do SDK.

Você pode criar, atualizar ou excluir dados de usuário personalizados usando um dos outros SDKs do Realm, com a Função de Realm ou consultando diretamente o Atlas.

Para usar dados de usuário personalizados, primeiro você deve habilitá-los no App Services:

  1. Criar uma aplicação.

  2. Habilite dados de usuário personalizados.

Você recupera dados de usuário personalizado no User.customData propriedade de um usuário conectado:

final customUserData = user.customData;

O App Services não atualiza dinamicamente o valor do User.customData imediatamente quando os dados subjacentes são alterados. Em vez disso, o App Services obtém a versão mais recente dos dados de usuário personalizado sempre que um usuário atualiza seu token de acesso ou quando você chama explicitamente User.refreshCustomData(), o que garante que seu aplicativo tenha os dados de usuário personalizado mais recentes.

// refreshCustomData() returns the updated custom data object
final updatedCustomData = await user.refreshCustomData();
// Now when you access User.customData it's the value
// returned from User.refreshCustomData()

Você pode gravar em dados de usuário personalizados com uma Função de Realm. As Função de Realm são funções JavaScript do lado do servidor incorporadas ao seu aplicativo de backend. Você pode chamar uma Função de Realm diretamente do Realm Flutter SDK.

Não é possível gravar em dados de usuário personalizados diretamente do Realm Flutter SDK.

Para saber mais sobre o Atlas Functions, consulte a seguinte documentação:

Não existe um padrão único para adicionar dados de usuário personalizados a partir de uma Função de Realm. Você deve escrever sua Função ou Funções de acordo com o caso de uso do seu aplicativo.

Neste exemplo, a Função de Realm pega um objeto passado pelo cliente e o adiciona à collection de dados de usuário personalizada no Atlas. A Função cria os dados de usuário personalizados se ainda não existirem e substitui todos os dados nele se existir.

writeCustomUserData.js - Função de Realm em execução no servidor (JavaScript)
exports = async function writeCustomUserData(newCustomUserData) {
const userId = context.user.id;
const customUserDataCollection = context.services
.get("mongodb-atlas")
.db("custom-user-data-database")
.collection("custom-user-data");
const filter = { userId };
// Replace the existing custom user data document with the new one.
const update = { $set: newCustomUserData };
// Insert document if it doesn't already exist
const options = { upsert: true };
const res = await customUserDataCollection.updateOne(filter, update, options);
return res;
};

O código do Realm SDK para chamar esta função:

Código do cliente Realm Flutter SDK (Dart)
final user = app.currentUser!;
final updatedTimestamp = DateTime.now().millisecondsSinceEpoch;
final updatedCustomUserData = {
"userId": user.id,
"favoriteFood": "pizza",
"lastUpdated": updatedTimestamp
};
final functionResponse = await user.functions
.call("writeCustomUserData", [updatedCustomUserData]);
// Contains the `updatedCustomUserData` object just added
// in the above Atlas Function call
final customUserData = await user.refreshCustomData();

Voltar

Vincular identidades do usuário