Overview
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
Ejemplo de objeto 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.
Leer 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();
Salida
{ "_id": "5f233a3ac49aca916792de1d", "description": "a test document for user test@example.com", "userID": "5f1f298f757611faec901d0f", "favoriteColor": "pink" }
Modificar los datos personalizados de un usuario
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 );
Salida
old favoriteColor: pink new favoriteColor: purple
Resumen
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.