Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Administrar usuarios

Datos de usuario personalizados - .NET SDK

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 Enable Custom User Data.

Importante

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

To create, update, or delete custom user data, you will need the following information from your custom user data configuration:

  • El clúster de datos de usuario personalizado

  • The custom user data database

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

  • The user ID field used to map custom user data documents to users (via user ID)

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

Custom Data May Be Stale

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.

To create custom user data for a user, create a MongoDB document in the custom user data collection. The user ID field of the document must contain the the user's user ID. The following example uses MongoDB Data Access to insert a document containing the user ID of the currently logged in user and several custom properties into the custom user data collection:

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

You may find it helpful to create a C# class (POCO) that represents the custom user data object. The SDK will serialize/deserialize this class to and from BSON when writing, reading, and updating properties. The example above uses the following class to map the properties:

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

Updating custom user data uses the same code as writing. The following example finds and updates the data by using the UpdateOneAsync() method, and then refreshes the data to ensure the latest changes are available:

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

Authenticate Users

En esta página