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

自定义用户数据 - React Native SDK

在此页面上

  • 先决条件
  • 读取自定义用户数据
  • 写入自定义用户数据

您可以直接在 React Native 应用程序中读取有关应用程序用户的任意数据(称为自定义用户数据)。 例如,您可以存储用户的首选语言、出生日期或当地时区。

在使用React Native应用中的自定义用户数据之前,必须在App Services App中启用它。 要学习;了解详情,请参阅启用自定义用户数据。

警告

自定义数据可能已过时

如果底层文档发生更改,App Services 不会动态更新用户的自定义数据。相反,只要用户刷新其访问令牌(例如登录时),App Services 都会获取新的数据副本。这可能意味着自定义数据不会立即反映更改内容,例如:来自身份验证触发器的更新。如果未刷新令牌,SDK 将等待30分钟,并在下一次调用后端时刷新令牌,这可能导致自定义用户数据滞后 30 分钟加上 SDK 下一次调用后端之前的时间。

如果您最近没有更新自定义用户数据,请使用用户对象的customData字段。 customData字段为只读。

如果您在过去30分钟内更新了自定义用户数据,请使用User.refreshCustomData()。

import React, {useState, useEffect} from 'react';
import {useApp, useUser} from '@realm/react';
function ReadCustomUserData() {
const user = useUser();
const [customUserData, setCustomUserData] = useState();
// Access current custom user data with `user.customData`
function readCurrentCustomUserData() {
setCustomUserData(user.customData);
}
// Refresh custom user data with `user.refreshCustomData()`
async function refreshCustomUserData() {
const data = await user.refreshCustomData();
setCustomUserData(data);
}
// ...
}

您可以使用MongoDB 数据访问写入用户的自定义用户数据。

您的写入操作必须在 用户 ID 字段 中包含您在应用后端配置自定义用户数据时设置的 User.id。如果您不在“用户 ID 字段”中包含用户 ID,则您写入的数据将不会链接到该用户的自定义用户数据。

import React, {useEffect} from 'react';
import {useApp, useUser} from '@realm/react';
function WriteCustomUserData() {
const user = useUser();
async function writeCustomUserData(favoriteColor: string) {
const customUserDataCollection = user
.mongoClient('mongodb-atlas')
.db('custom-user-data-database')
.collection('custom-user-data');
const filter = {
userId: user.id, // Query for the user object of the logged in user
};
const updateDoc = {
$set: {
// Set User ID if it's not already set
userId: user.id,
// Set the logged in user's favorite color
favoriteColor,
},
};
const options = {upsert: true};
await customUserDataCollection.updateOne(filter, updateDoc, options);
// Refresh custom user data once it's been updated on the server
const customUserData = await user.refreshCustomData();
console.log(customUserData);
}
// ...
}

注意

要通过客户端或用户函数修改自定义数据字段,必须配置对存储自定义数据的集合的写入权限。 如果您希望限制客户端对应用程序中自定义数据的写入权限,您仍然可以通过系统函数修改该对象。

后退

验证用户身份