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

Realm Schema中箭头函数默认值能否访问对象其他字段?

问题解答

首先明确:你没法在Realm字段的箭头函数默认值里访问对象的其他字段,原因有两个:

  • 箭头函数的this不会指向Realm对象,它继承的是定义时的外层作用域this;
  • 默认值函数是在对象实例完全创建之前执行的,这时候rowId的值还没绑定到对象上,自然拿不到。

给你几个可行的解决方案:

方案1:创建对象时手动同步赋值

先提前生成UUID,创建对象时同时传给两个字段,最直接简单:

const sharedUuid = new BSON.UUID();
const yourModelInstance = realm.create('YourModelName', {
  rowId: sharedUuid,
  branchId: sharedUuid
});

方案2:利用Realm的afterCreate生命周期钩子

在Schema里定义afterCreate钩子,对象创建完成后自动把branchId设为rowId的值,适合不想每次创建都手动写的场景:

const YourModelSchema = {
  name: 'YourModelName',
  properties: {
    rowId: { type: 'uuid', default: () => new BSON.UUID() },
    branchId: 'uuid' // 不要设默认值,交给钩子处理
  },
  afterCreate(obj) {
    // 对象创建完成后,直接赋值
    obj.branchId = obj.rowId;
  }
};

注意:别用计算属性来实现——计算属性是动态依赖的,后续更新rowId时branchId会自动跟着变,不符合你后续只更新其中一个字段的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:04:57