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.
Antes de comenzar
Para utilizar datos de usuario personalizados, primero debe habilitarlos en App Services:
Cree un usuario al que aplicarle datos personalizados.
Leer datos de usuario personalizados
Recupera datos de usuario personalizados en la propiedad customData del User objeto:
const customUserData = app.currentUser.customData; console.log(customUserData);
App Services no actualiza inmediatamente el valor de User.customData cuando cambian los datos subyacentes. En su lugar, 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 refreshCustomData(), lo que garantiza que la aplicación tenga los datos de usuario personalizados más recientes.
const updatedCustomUserData = await user.refreshCustomData(); console.log(updatedCustomUserData);
Nota
El campo customData del objeto de usuario es de solo lectura desde una aplicación Node.
Escribir en datos de usuario personalizados con un MongoClient
Mediante operaciones CRUD estándar a través del servicio MongoDB Atlas y un mongoClient, se puede acceder a los datos personalizados de un usuario. El siguiente ejemplo actualiza los datos personalizados de un usuario para cambiar su favoriteColor a rosa.
// A user must be logged in to use a mongoClient const user = app.currentUser; const mongo = user.mongoClient("mongodb-atlas"); const collection = mongo.db("custom-user-data-database").collection("custom-user-data"); // Query for the user object of the logged in user const filter = { userId: user.id}; // Set the logged in user's favorite color to pink const update = { $set: { favoriteColor: "pink" }}; // Insert document if it doesn't already exist const options = { upsert: true }; const result = await collection.updateOne(filter, update, options);
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.