Acessar usuário de dados personalizado - SDK da Web
Nesta página
Visão geral
Você pode ler dados arbitrários sobre seus usuários de aplicativo, conhecidos como dados de usuário personalizados, diretamente dentro do seu aplicativo da web. Por exemplo, você pode armazenar o idioma preferido do usuário, a data de nascimento ou o fuso horário local.
Realm faz referência a uma coleção MongoDB em seu cluster vinculado para localizar os dados personalizados de um determinado usuário, mas não adiciona ou atualiza nenhum documento de dados de usuário personalizado. Você é responsável por gerenciar e atualizar os dados do usuário na coleção. Para obter detalhes sobre como habilitar e configurar dados de usuário personalizados, consulte Ativar dados de usuário personalizados
Exemplo de objeto de usuário
Os exemplos de código nesta página usam o seguinte objeto de usuário no qual o campo custom_data
ainda não foi definido.
{ id: '5f1f216e82df4a7979f9da93', type: 'normal', data: { email: 'test@example.com' }, custom_data: { _id: '5f20d083a37057d55edbdd57', userID: '5f1f216e82df4a7979f9da93', description: 'a test document for user: test@example.com', }, identities: [ { id: '5f1f216e82df4a7979f9da90', provider_type: 'local-userpass' } ] }
Importante
Para usar dados de usuário personalizados, você deve primeiro Habilitar dados de usuário personalizados.
Ler usuário de dados personalizado
Aviso
Os dados personalizados podem ser obsoletos
O App Services não atualiza dinamicamente os dados personalizados de um usuário se o documento subjacente for alterado. Em vez disso, o App Services obtém uma nova cópia dos dados sempre que um usuário atualiza seu token de acesso, por exemplo, quando faz login. Isso pode significar que os dados personalizados não refletirão imediatamente as alterações, por exemplo, atualizações de um trigger de autenticação. Se o token não for atualizado o SDK aguardará 30 minutos e, em seguida, o atualizará na próxima chamada para o backend, assim os dados personalizados do usuário poderão ficar obsoletos por até 30 minutos, mais o tempo até que ocorra a próxima chamada do SDK para o backend.
Você pode acessar uma cópia somente leitura dos dados personalizados de um usuário conectado diretamente da propriedade Realm.User.customData.
// Access a logged in user's read-only custom data const customData = app.currentUser.customData;
Para buscar manualmente a versão mais recente dos dados personalizados de um usuário, chame User.refreshCustomData().
// Refresh a user's custom data to make sure we have the latest version await app.currentUser.refreshCustomData();
Saída
{ "_id": "5f233a3ac49aca916792de1d", "description": "a test document for user test@example.com", "userID": "5f1f298f757611faec901d0f", "favoriteColor": "pink" }
Modificar os dados personalizados de um usuário
Observação
Para modificar o campo de dados personalizados a partir de uma função de cliente ou usuário, é necessário configurar a permissão de gravação na coleção em que os dados personalizados estão armazenados. Se preferir restringir o acesso de gravação do cliente aos dados personalizados do seu aplicativo, você ainda poderá modificar o objeto a partir de uma função do sistema.
Você pode modificar os dados personalizados de um usuário atualizando o documento subjacente na coleta de dados personalizados do seu aplicativo.
O exemplo seguinte atualiza os dados personalizados do usuário para configurar a propriedade favoriteColor
para "purple"
:
// Get a client object for your app's custom user data collection const mongo = app.currentUser.mongoClient(CLUSTER_NAME); const collection = mongo.db(DATABASE_NAME).collection(COLLECTION_NAME); // Log the user's favorite color before we change it console.log( "old favoriteColor: ", app.currentUser.customData.favoriteColor ); // Update the user's custom data document await collection.updateOne( { userId: app.currentUser.id }, // Query for the user object of the logged in user { $set: { favoriteColor: "purple" } } // Set the logged in user's favorite color to purple ); // Refresh the user's local customData property await app.currentUser.refreshCustomData(); // Log the user's new favorite color console.log( "new favoriteColor: ", app.currentUser.customData.favoriteColor );
Saída
old favoriteColor: pink new favoriteColor: purple
Resumo
Você pode utilizar usuário de dados personalizado para armazenar informações sobre seus usuários do aplicativo.
O campo de dados de usuário personalizado do objeto de usuário é somente leitura e somente pode ser modificado executando operações CRUD pelo serviço do Atlas.