Managed dados de usuário personalizados - Kotlin SDK
Nesta página
Esta página descreve os dados personalizados do usuário em um aplicativo do App Services e como gerenciá-los com o Realm Kotlin SDK.
Importante
Atualmente, você só pode ler dados de usuário personalizados com o Kotlin 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.
O Atlas App Services permite que você associe dados a um usuário autenticado, como o idioma preferido do usuário, a data de nascimento ou o fuso horário local. Você pode armazenar esses dados de usuário personalizados arbitrários sobre seus usuários e lê-los no aplicativo cliente.
Novidades na versão 1.9.0.
Você pode serializar dados de usuário personalizados usando um codificador EJSON. Para mais informações, incluindo exemplos, consulte Codificação EJSON para Atlas.
Pré-requisitos
Para usar dados de usuário personalizados, você deve ter um App Services App com dados de usuário personalizados habilitado.
Para configurar um App Services App que usa dados de usuário personalizados, consulte o seguinte:
Ativar Dados personalizados do usuário na documentação do App Services
Ler usuário de dados personalizado
Você pode recuperar dados de usuário personalizados de um usuário conectado atualmente usando o arquivo User.customDataAsBsonDocument() função de extensão:
val user = app.currentUser!! val customUserData = user.customDataAsBsonDocument()
O Atlas App Services não atualiza dinamicamente o valor do documento de dados personalizado do usuário do lado do cliente 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 o User.refreshCustomData() para solicitar a versão mais recente dos dados personalizados de um usuário.
// Update the custom data object user.refreshCustomData() // Now when you access the custom data, it's the // updated data object val updatedUserData = user.customDataAsBsonDocument()
Gravar dados de usuário personalizados com Função de Realm
Você pode gravar em dados de usuário personalizados com uma função do Atlas. A 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 do Atlas diretamente do Realm Kotlin SDK.
Atualmente, não é possível gravar em dados de usuário personalizados diretamente do Realm Kotlin SDK.
Não existe um padrão único para adicionar dados de usuário personalizados a partir de uma Função do Atlas. Você deve escrever sua função ou funções para se adequar ao 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 Kotlin SDK para chamar esta função:
// Write the custom user data through a call // to the `writeCustomUserData` function val functionResponse = user.functions .call<BsonDocument>("writeCustomUserData", mapOf("userId" to user.id, "favoriteColor" to "blue") ) // Refreshed custom user data contains updated // `favoriteColor` value added in above Atlas Function call user.refreshCustomData() val updatedUserData = user.customDataAsBsonDocument()
Observação
Para saber mais sobre o Atlas Functions, consulte a seguinte documentação:
Funções do Atlas na documentação do App Services
Excluir dados personalizados com o Atlas Function
Os dados personalizados do usuário são armazenados em um documento vinculado ao objeto Usuário .
Importante
Excluir um usuário não exclui os dados personalizados do usuário. Talvez seja necessário excluir totalmente os dados do usuário para garantir a conformidade legal (por exemplo, para cumprir os requisitos de exclusão de conta da Apple).
Para excluir dados personalizados do usuário, você deve excluir manualmente o documento de dados personalizados do usuário.
Você pode excluir dados de usuário personalizados utilizando uma Função de Realm. Atualmente, não é possível excluir dados de usuário personalizados diretamente do Realm Kotlin SDK.
Neste exemplo, a Função Atlas não exige nenhum argumento. A Função usa o contexto da função para determinar o ID de usuário do chamador e exclui o documento de dados de usuário personalizado que corresponde ao ID do usuário.
exports = async function deleteCustomUserData() { const userId = context.user.id; const customUserDataCollection = context.services .get("mongodb-atlas") .db("custom-user-data-database") .collection("custom-user-data"); const filter = { userId }; const res = await customUserDataCollection.deleteOne(filter); return res; };
O código Kotlin SDK que chama essa função exige apenas um usuário conectado para chamar a função:
val deleteResponse = user.functions .call<BsonDocument>("deleteCustomUserData")