Puede almacenar datos personalizados arbitrarios sobre sus usuarios con Atlas App Services. Por ejemplo, puede almacenar el idioma preferido, la fecha de nacimiento o la zona horaria local de un usuario. Antes de escribir y leer estos datos, debe habilitar los datos de usuario personalizados en el backend. Para obtener más información, consulte Habilitar datos de usuario personalizados.
Importante
Actualmente, solo se pueden leer datos de usuario personalizados con el SDK de Flutter. En una futura actualización, también se podrán escribir datos de usuario personalizados desde el SDK.
Puede crear, actualizar o eliminar datos de usuario personalizados utilizando uno de los otros SDK de Realm, con funciones de Atlas o consultando directamente a Atlas.
Antes de comenzar
Para utilizar datos de usuario personalizados, primero debe habilitarlos en App Services:
Leer los datos de usuario personalizados de un usuario
Recupera datos de usuario personalizados en User.customData propiedad de un usuario conectado:
final customUserData = user.customData;
App Services no actualiza dinámicamente el valor de la
User.customData Inmediatamente cuando cambian los datos subyacentes. En cambio, App Services obtiene la versión más reciente de los datos de usuario personalizados cada vez que un usuario actualiza su token de acceso o cuando se llama explícitamente a User.refreshCustomData(), lo que garantiza que la aplicación tenga los datos de usuario personalizados más recientes.
// refreshCustomData() returns the updated custom data object final updatedCustomData = await user.refreshCustomData(); // Now when you access User.customData it's the value // returned from User.refreshCustomData()
Escribir datos de usuario personalizados con funciones Atlas
Puedes escribir en datos de usuario personalizados con una función Atlas. Estas funciones son funciones JavaScript del lado del servidor integradas en tu aplicación backend. Puedes llamarlas directamente desde el SDK de Flutter de Realm.
No es posible escribir datos de usuario personalizados directamente desde el SDK de Flutter de Realm.
Para obtener más información sobre las funciones de Atlas, consulte la siguiente documentación:
Funciones de Atlas en la documentación de App Services.
No existe un patrón único para agregar datos de usuario personalizados desde una función Atlas. Debes escribir la función o funciones que mejor se adapten al caso de uso de tu aplicación.
En este ejemplo, la función Atlas toma un objeto transferido por el cliente y lo añade a la colección de datos de usuario personalizados en Atlas. La función crea los datos de usuario personalizados si aún no existen y reemplaza todos los datos que contienen, si existen.
exports = async function writeCustomUserData(newCustomUserData) { const userId = context.user.id; const customUserDataCollection = context.services .get("mongodb-atlas") .db("custom-user-data-database") .collection("custom-user-data"); const filter = { userId }; // Replace the existing custom user data document with the new one. const update = { $set: newCustomUserData }; // Insert document if it doesn't already exist const options = { upsert: true }; const res = await customUserDataCollection.updateOne(filter, update, options); return res; };
El código del SDK de Realm para llamar a esta función:
final user = app.currentUser!; final updatedTimestamp = DateTime.now().millisecondsSinceEpoch; final updatedCustomUserData = { "userId": user.id, "favoriteFood": "pizza", "lastUpdated": updatedTimestamp }; final functionResponse = await user.functions .call("writeCustomUserData", [updatedCustomUserData]); // Contains the `updatedCustomUserData` object just added // in the above Atlas Function call final customUserData = await user.refreshCustomData();