Esta página describe datos de usuario personalizados en una aplicación de App Services y cómo administrarlos con el SDK Realm Kotlin.
Importante
Actualmente, solo se pueden leer datos de usuario personalizados con el SDK de Kotlin. 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.
Atlas App Services te permite asociar datos con un usuario autenticado, como el lenguaje preferido del usuario, la fecha de nacimiento o la zona horaria local. Puedes almacenar estos datos personalizados de usuario arbitrarios sobre tus usuarios y leerlos desde tu aplicación cliente.
Nuevo en la versión 1.9.0.
Puede serializar datos de usuario personalizados mediante un codificador EJSON. Para obtener más información, incluidos ejemplos, consulte Codificación EJSON para Atlas.
Requisitos previos
Para usar datos de usuario personalizados, debes tener una App Services App con datos de usuario personalizados habilitados.
Para configurar una aplicación de Servicios de aplicaciones que utilice datos de usuario personalizados, consulte lo siguiente:
Habilitar datos de usuario personalizados en la documentación de App Services
Leer datos de usuario personalizados
Puede recuperar datos de usuario personalizados de un usuario que haya iniciado sesión actualmente mediante la función de extensión User.customDataAsBsonDocument():
val user = app.currentUser!! val customUserData = user.customDataAsBsonDocument()
Atlas App Services no actualiza dinámicamente el valor del documento de datos personalizados del usuario del lado del cliente inmediatamente cuando cambian los datos subyacentes. En su lugar, App Services obtiene la versión más reciente de los datos personalizados del usuario cuando este actualiza su token de acceso o cuando se llama explícitamente a la función User.refreshCustomData() para solicitar la última versión de los datos personalizados de un usuario.
// Update the custom data object user.refreshCustomData() // Now when you access the custom data, it's the // updated data object val updatedUserData = user.customDataAsBsonDocument()
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 Kotlin de Realm.
Actualmente, no es posible guardar en datos de usuario personalizados directamente desde el SDK de Realm Kotlin.
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 proporcionado 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, si existen, reemplaza todos los datos que contiene.
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 Kotlin para llamar a esta función:
// Write the custom user data through a call // to the `writeCustomUserData` function val functionResponse = user.functions .call<BsonDocument>("writeCustomUserData", mapOf("userId" to user.id, "favoriteColor" to "blue") ) // Refreshed custom user data contains updated // `favoriteColor` value added in above Atlas Function call user.refreshCustomData() val updatedUserData = user.customDataAsBsonDocument()
Nota
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
Eliminar datos personalizados con funciones de Atlas
Los datos de usuario personalizados se almacenan en un documento vinculado al objeto Usuario.
Importante
Eliminar un usuario no elimina sus datos personalizados. Es posible que deba eliminarlos por completo para garantizar el cumplimiento legal (por ejemplo, para cumplir con los requisitos de eliminación de cuentas de Apple).).
Para eliminar datos de usuario personalizados, debe eliminar manualmente el documento de datos personalizados del usuario.
Puedes eliminar datos de usuario personalizados mediante una función Atlas. Actualmente, no es posible eliminarlos directamente desde el SDK de Kotlin de Realm.
En este ejemplo, la función Atlas no requiere argumentos. Utiliza el contexto de la función para determinar el ID de usuario del usuario que la llama y elimina el documento de datos de usuario personalizado que coincide con dicho ID.
exports = async function deleteCustomUserData() { const userId = context.user.id; const customUserDataCollection = context.services .get("mongodb-atlas") .db("custom-user-data-database") .collection("custom-user-data"); const filter = { userId }; const res = await customUserDataCollection.deleteOne(filter); return res; };
El código del Kotlin SDK que llama a esta función requiere solo un usuario con sesión iniciada para llamar a la función:
val deleteResponse = user.functions .call<BsonDocument>("deleteCustomUserData")