Docs 菜单
Docs 主页
/ /
Atlas Device SDKs
/ /

托管自定义用户数据 - Kotlin SDK

在此页面上

  • 先决条件
  • 读取自定义用户数据
  • 使用 Atlas Function 写入自定义用户数据
  • 使用 Atlas Function 删除自定义数据

本页介绍 App Services App 中的自定义用户数据,以及如何使用 Realm Kotlin SDK 对其进行托管。

重要

目前,您只能使用 Kotlin SDK 读取自定义用户数据。 在 SDK 的未来更新中,您也将能够从 SDK 写入自定义用户数据。

您可以使用其他 Realm SDK 结合 Atlas Functions 或直接查询 Atlas 来创建、更新或删除自定义用户数据。

Atlas App Services 允许您将数据与经过身份验证的用户关联起来,例如用户的首选语言、出生日期或当地时区。 您可以存储有关用户的任意自定义用户数据,并从客户端应用程序中读取这些数据。

1.9.0 版本中的新增功能

您可以使用 EJSON 编码器序列化自定义用户数据。 有关包括示例在内的更多信息,请参阅Atlas 的 EJSON 编码。

要使用自定义用户数据,您必须拥有启用了自定义用户数据的 App Services App。

要设置使用自定义用户数据的 App Services App,请参阅以下内容:

  1. 将您的应用连接到 Atlas App Services

  2. 在App Services文档中启用自定义用户数据

您可以使用User.customDataAsBsonDocument()检索当前登录用户的自定义用户数据。 扩展函数:

val user = app.currentUser!!
val customUserData = user.customDataAsBsonDocument()

当根本的数据发生变化时, Atlas App Services不会立即动态更新客户端用户自定义数据文档的值。 相反,每当用户刷新其访问权限令牌或显式调用User.refreshCustomData()时, App Services都会获取最新版本的自定义用户数据。 函数来请求最新版本的用户自定义数据。

// Update the custom data object
user.refreshCustomData()
// Now when you access the custom data, it's the
// updated data object
val updatedUserData = user.customDataAsBsonDocument()

您可以使用 Atlas Function 写入自定义用户数据。 Atlas Functions 是内置于后端应用中的服务器端 JavaScript 函数。 您可以直接从 Realm Kotlin SDK调用 Realm 函数

目前无法直接从 Realm Kotlin SDK 写入自定义用户数据。

从 Atlas Function 添加自定义用户数据没有单一的模式。 您应该编写一个或多个函数以适合应用程序的使用案例。

在此示例中,Realm 函数获取客户端传递的对象,并将其添加到 Atlas 的collection中。如果自定义用户数据尚不存在,则该函数将创建该数据;如果该数据存在,则该函数将替换其中的所有数据。

writeCustomUserData.js — 在服务器上运行的 Realm 函数 (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;
};

调用此函数的 Kotlin SDK 代码:

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

注意

要了解有关 Atlas Function 的更多信息,请参阅以下文档:

自定义用户数据存储在链接到用户对象的文档中。

重要

删除用户 不会 删除自定义用户数据。您可能需要完全删除用户数据以确保法律合规(示例,为了遵守 Apple 的帐户删除要求 )。

要删除自定义用户数据,您必须手动删除用户的自定义数据文档。

您可以使用 Atlas Function 删除自定义用户数据。 目前无法直接从 Realm Kotlin SDK 中删除自定义用户数据。

在此示例中,Realm 函数不需要任何参数。该函数使用函数上下文来确定调用者的用户 ID,并删除与该用户 ID 匹配的自定义用户数据文档。

deleteCustomUserData.js — 在服务器上运行的 Realm 函数 (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;
};

调用此函数的 Kotlin SDK 代码只需登录用户即可调用该函数:

val deleteResponse = user.functions
.call<BsonDocument>("deleteCustomUserData")

后退

删除用户