You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在React Native的Realm中如何仅展示分区匹配用户ID的文档

解决Realm中用户仅查看自身文档的问题

核心思路

你已经通过_partition字段标记了用户ID,只需在查询时过滤该字段,同时配合Realm实例的分区配置,就能实现数据隔离。

步骤1:修改查询逻辑,过滤当前用户的分区

在useQuery中添加filtered条件,只返回当前用户_partition匹配的交易记录:

// 先获取当前登录用户的ID(从你的认证系统或Realm用户对象中获取)
const currentUserId = "当前用户的ID";

const transactions = useQuery(Transaction, transaction => {
  return transaction
    .filtered('_partition == $0', currentUserId)
    .sorted('date')
});

步骤2:配置Realm实例的分区值(关键安全保障)

除了查询过滤,更底层的安全是让Realm实例仅同步当前用户分区的数据。打开Realm时指定partitionValue为当前用户ID:

const realmConfig = {
  schema: [Transaction],
  partitionValue: currentUserId, // 限定仅同步该用户分区的数据
  // 其他同步配置(如sync对象,根据你的Realm Sync设置添加)
};

// 在组件中使用useRealm或Realm.open初始化实例
const realm = useRealm(realmConfig);

补充:确保Schema定义正确

确认Transaction schema中包含_partition字段:

const Transaction = {
  name: 'Transaction',
  properties: {
    _partition: 'string', // 对应用户ID的分区键
    date: 'date',
    // 你的其他交易字段
  },
  primaryKey: '_id', // 可选,根据你的数据结构设置
};

这样设置后,Realm会从同步层就限制仅拉取当前用户的数据,再加上查询过滤的双重验证,就能彻底避免用户查看他人文档的问题。

内容的提问来源于stack exchange,提问作者Programmatic Dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 05:45:03