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

自定义用户数据 - Flutter SDK

在此页面上

  • 开始之前
  • 读取用户的自定义用户数据
  • 使用 Atlas Function 写入自定义用户数据

您可以使用Atlas App Services存储有关用户的任意自定义数据。 示例,您可以存储用户的首选语言、出生日期或当地时区。 在写入和读取此数据之前,您必须在后端启用自定义用户数据。 要学习;了解详情,请参阅启用自定义用户数据。

重要

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

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

要使用自定义用户数据,必须首先在 App Services 中启用自定义用户数据:

  1. 创建应用。

  2. 启用自定义用户数据。

您自定义用户数据在检索{ 已登录用户的属性:

final customUserData = user.customData;

当根本的数据发生变化时, App Services不会立即动态更新 User.customData的值。 相反,每当用户刷新其 访问权限令牌 或显式调用 User.refreshCustomData() 时, App Services都会获取最新版本的自定义用户数据 ,确保您的应用拥有最新的自定义用户数据。

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

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

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

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

从 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;
};

调用此函数的 Realm 软件开发工具包(Realm SDK)代码:

Realm Flutter SDK 客户端代码 (Dart)
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();

后退

关联用户身份