Docs Menu
Docs Home
/ /
Administrar usuarios

Datos de usuario personalizados - SDK .NET

Puedes almacenar datos de usuario personalizados arbitrarios sobre tus usuarios en realm. Por ejemplo, puedes almacenar el idioma preferido, la fecha de nacimiento o la zona horaria local de un usuario. Antes de escribir y leer estos datos, debes habilitar los datos de usuario personalizados en el backend. Para obtener más información, consulta Habilitar datos de usuario personalizados.

Importante

Para utilizar datos de usuario personalizados, primero debe habilitar datos de usuario personalizados.

Para crear, actualizar o eliminar datos de usuario personalizados, necesitará la siguiente información de su configuración de datos de usuario personalizados:

  • El clúster de datos de usuario personalizado

  • La base de datos de datos de usuario personalizada

  • La colección en la que se almacenan los documentos de datos de usuario personalizados

  • El campo de ID de usuario utilizado para asignar documentos de datos de usuario personalizados a los usuarios (a través de ID de usuario)

Puede encontrar esta información en la interfaz de usuario de App Services. En la barra lateral izquierda, haga clic en App Usersy luego seleccione la pestaña Custom User Data.

Puede recuperar datos de usuario personalizados llamando al método GetCustomData() en el User objeto de un usuario 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}");

Advertencia

Los datos personalizados pueden estar obsoletos

aplicación Services no actualiza, de manera dinámica, el valor de CustomData inmediatamente cuando los datos subyacentes cambian. En lugar de esto, App Services obtiene la versión más reciente de los datos de usuario personalizados cada vez que un usuario actualiza su access token o bien si llamas explícitamente al método RefreshCustomDataAsync(), que asegura que tu aplicación cuente con la información más actualizada de usuario personalizada.

Para crear datos de usuario personalizados, cree un documento de MongoDB en la colección de datos de usuario personalizada. El campo "ID de usuario" del documento debe contener el ID del usuario. El siguiente ejemplo utiliza MongoDB Data Access para insertar un documento que contiene el ID del usuario que ha iniciado sesión y varias propiedades personalizadas en la colección de datos de usuario 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);

Puede resultarle útil crear una clase de C# (POCO) que represente el objeto de datos de usuario personalizado. El SDK serializará/deserializará esta clase a y desde BSON al escribir, leer y actualizar propiedades. El ejemplo anterior utiliza la siguiente clase para asignar las propiedades:

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;
}
}

La actualización de datos de usuario personalizados utiliza el mismo código que la escritura. El siguiente ejemplo busca y actualiza los datos mediante el método UpdateOneAsync() y, a continuación, los actualiza para garantizar que los cambios más recientes estén disponibles:

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}");

La eliminación de datos de usuario personalizados se realiza de la misma manera que la escritura y actualización. El siguiente ejemplo busca y elimina los datos mediante el 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);

Volver

Autenticar usuarios

En esta página