Docs Menu
Docs Home
/ /
Gestión de usuarios

Acceder a datos de usuario personalizados - SDK web

Puedes leer datos arbitrarios sobre los usuarios de tu aplicación, conocidos como datos de usuario personalizados, directamente en tu aplicación web. Por ejemplo, puedes almacenar el lenguaje preferido de un usuario, la fecha de nacimiento o la zona horaria local.

Realm hace referencia a una colección de MongoDB en su clúster vinculado para encontrar los datos personalizados de un usuario determinado, pero no agrega ni actualiza ningún documento de datos de usuario personalizado. Usted es responsable de administrar y actualizar los datos de usuario en la colección. Para obtener más información sobre cómo habilitar y configurar los datos de usuario personalizados, consulte Habilitar datos de usuario personalizados

Los ejemplos de código en esta página utilizan el siguiente objeto de usuario en el que se encuentra el custom_data El campo aún no ha sido establecido.

{
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 utilizar datos de usuario personalizados, primero debe habilitar datos de usuario personalizados.

Advertencia

Los datos personalizados pueden estar obsoletos

App Services no actualiza dinámicamente los datos personalizados de un usuario si el documento subyacente cambia. En su lugar, obtiene una nueva copia de los datos cada vez que un usuario actualiza su token de acceso, como al iniciar sesión. Esto puede significar que los datos personalizados no reflejen los cambios inmediatamente, por ejemplo, las actualizaciones de un disparador de autenticación. Si el token no se actualiza, el SDK espera 30 minutos y lo actualiza en la siguiente llamada al backend, por lo que los datos personalizados del usuario podrían estar obsoletos hasta 30 minutos, más el tiempo hasta la siguiente llamada del SDK al backend.

Puede acceder a una copia de solo lectura de los datos personalizados de un usuario que haya iniciado sesión directamente desde la propiedad Realm.User.customData.

// Access a logged in user's read-only custom data
const customData = app.currentUser.customData;

Para obtener manualmente la última versión de los datos personalizados de un usuario, llame a User.refreshCustomData().

// Refresh a user's custom data to make sure we have the latest version
await app.currentUser.refreshCustomData();
{
"_id": "5f233a3ac49aca916792de1d",
"description": "a test document for user test@example.com",
"userID": "5f1f298f757611faec901d0f",
"favoriteColor": "pink"
}

Nota

Para modificar el campo de datos personalizado desde una función de cliente o usuario, se debe configurar el permiso de escritura en la colección donde se almacenan los datos personalizados. Si prefiere restringir el acceso de escritura del cliente a los datos personalizados desde su aplicación, puede modificar el objeto desde una función del sistema.

Puede modificar los datos personalizados de un usuario actualizando el documento subyacente en la colección de datos personalizados de su aplicación.

El siguiente ejemplo actualiza los datos personalizados del usuario para establecer la propiedad favoriteColor en "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
);
old favoriteColor: pink
new favoriteColor: purple
  • Puede utilizar datos de usuario personalizados para almacenar información sobre los usuarios de su aplicación.

  • El campo de datos de usuario personalizado del objeto de usuario es de solo lectura y solo se puede modificar realizando operaciones CRUD a través del servicio Atlas.

Volver

Trabajar con múltiples usuarios

En esta página