Dados personalizados do usuário - Flutter SDK
Nesta página
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.
Antes de começar
Para usar dados de usuário personalizados, primeiro você deve habilitá-los no App Services:
Ler os dados de usuário personalizados de um usuário
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()
Gravar dados de usuário personalizados com uma Função de Realm
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:
Atlas Functions na documentação do Atlas App Services .
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.
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:
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();