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
/ /
Gestión de usuarios

Access Custom User Data - Web SDK

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 personalizados de usuario

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

Custom Data May Be Stale

App Services does not dynamically update a user's custom data if the underlying document changes. Instead, App Services fetches a new copy of the data whenever a user refreshes their access token, such as when they log in. This may mean that the custom data won't immediately reflect changes, e.g. updates from an authentication Trigger. If the token is not refreshed, the SDK waits 30 minutes and then refreshes it on the next call to the backend, so custom user data could be stale for up to 30 minutes plus the time until the next SDK call to the backend occurs.

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 versión más reciente de los datos personalizados de un usuario, llama 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 personalizados desde una función de cliente o usuario, debe configurarse el permiso de escritura en la colección donde se almacenan los datos personalizados. Si prefieres restringir el acceso de escritura de los clientes a los datos personalizados de tu aplicación, aún puedes modificar el objeto desde una función del sistema.

You can modify a user's custom data by updating the underlying document in your app's custom data collection.

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
  • You can use custom user data to store information about your application users.

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

Volver

Trabajar con múltiples usuarios

En esta página