从领域对象中删除引用

时间:2018-10-04 09:24:15

标签: javascript reactjs react-native realm

我是Realm的新手。接下来,我在Realm中努力工作。

我想使用JavaScript从Realm数据库中读取数据并收到错误消息:“无法在写事务之外修改托管对象”。

我知道出现此错误是因为该对象仍与Realm DB链接,我们必须打开一个事务对其进行修改。

反正Realm中有摆脱参考的地方吗?我只想获取对象。

注意:

我四处搜寻,发现有一种方法可以使用:

JSON.parse(JSON.stringify(Object));

但是,它将更改对象内部所有类型为Date的变量,我们稍后必须重新设置其格式,这会花费很多精力。

1 个答案:

答案 0 :(得分:0)

您可能要寻找的是方法Realm.copyFromRealm(RealmObject)

在文档中规定如下:

copyFromRealm:

public <E extends RealmModel> E copyFromRealm(E realmObject)

对已经持久的RealmObject进行非托管的内存中副本。这是一个深层副本,它将复制所有引用的对象。

但是请记住,对托管RealmObject的此非托管副本所做的更改不会更新RealmObject。要将所有更改带回到RealmObject中,您必须通过RealmTransaction显式地执行此操作,您可以在其中更新RealmObject。

此外,您可以使用RealmObject.isManaged()来检查所选对象当前是否由Realm管理。如果没有,则无需创建非托管副本。