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
/ /
Administrar usuarios

Gestiona datos de usuario personalizados - Kotlin SDK

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

Currently you can only read custom user data with the Kotlin SDK. In a future update to the SDK, you will be able to write custom user data from the SDK as well.

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.

Nueva en la versión 1.9.0.

You can serialize custom user data using an EJSON encoder. For more information, including examples, refer to EJSON Encoding for Atlas.

Para usar datos de usuario personalizados, debes tener una App Services App con datos de usuario personalizados habilitados.

To set up an App Services App that uses custom user data, refer to the following:

  1. Connect your app to Atlas App Services

  2. Habilitar datos de usuario personalizados en la documentación de App Services

You can retrieve custom user data of a currently logged-in user using the User.customDataAsBsonDocument() extension function:

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()

You can write to custom user data with an Atlas Function. Atlas Functions are server-side JavaScript functions that are built into your backend App. You can call an Atlas Function directly from the Realm Kotlin SDK.

Actualmente, no es posible guardar en datos de usuario personalizados directamente desde el SDK de Realm Kotlin.

There is no single pattern for adding custom user data from an Atlas Function. You should write your Function or Functions to suit your application's use case.

In this example, the Atlas Function takes an object passed by the client and adds it to the custom user data collection in Atlas. The Function creates the custom user data if it doesn't already exist and replaces all data in it if it does exist.

writeCustomUserData.js - Atlas Function ejecutándose en el servidor (JavaScript)
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;
};

The Kotlin SDK code to call this Function:

// 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

To learn more about Atlas Functions, refer to the following documentation:

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 borrar los datos de usuario personalizados, debes borrar manualmente el documento de datos personalizados del usuario.

You can delete custom user data using an Atlas Function. Currently, it is not possible to delete custom user data directly from the Realm Kotlin SDK.

In this example, the Atlas Function does not require any arguments. The Function uses the function context to determine the caller's user ID, and deletes the custom user data document matching the user's ID.

deleteCustomUserData.js - Atlas Function running on server (JavaScript)
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")

Volver

Delete Users

En esta página