Dados personalizados do usuário - .NET SDK
Nesta página
Visão geral
Você pode armazenar dados de usuário personalizados arbitrários sobre seus usuários no Realm. 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
Para usar dados de usuário personalizados, você deve primeiro Habilitar dados de usuário personalizados.
Para criar, atualizar ou excluir dados de usuário personalizados, você precisará das seguintes informações da sua configuração de dados de usuário personalizados:
O cluster de dados de usuário personalizado
O banco de dados de usuário personalizado
A collection na qual os documento de usuário de dados personalizados são armazenados
O campo de ID do usuário usado para mapear documentos de usuários de dados personalizados para usuários (via ID do usuário)
Você pode encontrar essas informações na interface do usuário do App Services. Na barra lateral esquerda, clique em App Users e selecione a guia Custom User Data .
Ler os dados de usuário personalizados de um usuário
Você recupera dados personalizados do usuário chamando o método GetCustomData () no objeto User
de um usuário conectado:
await user.RefreshCustomDataAsync(); // Tip: define a class that represents the custom data // and use the gerneic overload of GetCustomData<>() var customUserData = user.GetCustomData<CustomUserData>(); Console.WriteLine($"User has pets: {customUserData.HasPets}"); Console.WriteLine($"User's favorite color is {customUserData.FavoriteColor}"); Console.WriteLine($"User's timezone is {customUserData.LocalTimeZone}");
Aviso
Os dados personalizados podem ser obsoletos
O App Services não atualiza dinamicamente o valor do 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 o método RefreshCustomDataAsync () , que garante que seu aplicativo tenha os dados de usuário personalizados mais recentes.
Criar um documento de dados de usuário personalizado de um usuário
Para criar dados de usuário personalizados para um usuário, crie um documento MongoDB na collection de dados de usuário personalizada. O campo ID do usuário do documento deve conter o ID de usuário do usuário. O exemplo a seguir usa o MongoDB Data Access para inserir um documento contendo o ID do usuário do usuário conectado no momento e várias propriedade na collection de dados de usuário personalizada:
app = App.Create(myRealmAppId); user = await app.LogInAsync(Credentials.Anonymous()); mongoClient = user.GetMongoClient("mongodb-atlas"); dbTracker = mongoClient.GetDatabase("tracker"); userDataCollection = dbTracker.GetCollection<CustomUserData>("user_data"); var cud = new CustomUserData(user.Id) { FavoriteColor = "pink", LocalTimeZone = "+8", HasPets = true }; var insertResult = await userDataCollection.InsertOneAsync(cud);
Pode ser útil criar uma classe C# (POCO) que represente o objeto de dados do usuário personalizado. O SDK serializará/desserializará essa classe de e para o BSON ao gravar, ler e atualizar propriedades. O exemplo acima utiliza a seguinte classe para mapear as propriedades:
public class CustomUserData { public string _id { get; private set; } public string _partition { get; private set; } public string FavoriteColor { get; set; } public string LocalTimeZone { get; set; } public bool HasPets { get; set; } public CustomUserData(string id, string partition = "myPart") { this._id = id; this._partition = partition; } }
Atualizar os dados personalizados de um usuário
A atualização de dados de usuário personalizados usa o mesmo código da escrita. O exemplo a seguir localiza e atualiza os dados usando o método UpdateOneAsync() e, em seguida, atualiza os dados para garantir que as alterações mais recentes estejam disponíveis:
var updateResult = await userDataCollection.UpdateOneAsync( new BsonDocument("_id", user.Id), new BsonDocument("$set", new BsonDocument("HasPets", false))); await user.RefreshCustomDataAsync(); var customUserData = user.GetCustomData<CustomUserData>(); Console.WriteLine($"User has pets: {customUserData.HasPets}"); Console.WriteLine($"User's favorite color is {customUserData.FavoriteColor}"); Console.WriteLine($"User's timezone is {customUserData.LocalTimeZone}");
Excluir os dados personalizados de um usuário
A exclusão de dados de usuário personalizado usa a mesma abordagem de gravação e atualização. O exemplo a seguir localiza e exclui os dados usando o método DeleteOneAsync() :
var deleteResult = await userDataCollection.DeleteOneAsync( new BsonDocument("_id", user.Id)); // The `DeletedCount` should be 1 Console.WriteLine(deleteResult.DeletedCount); // There should no longer be a custom user document for the user var customData = await userDataCollection.FindOneAsync( new BsonDocument("_id", user.Id)); Console.WriteLine(customData == null);