我是Realm的新手。接下来,我在Realm中努力工作。
我想使用JavaScript从Realm数据库中读取数据并收到错误消息:“无法在写事务之外修改托管对象”。
我知道出现此错误是因为该对象仍与Realm DB链接,我们必须打开一个事务对其进行修改。
反正Realm中有摆脱参考的地方吗?我只想获取对象。
我四处搜寻,发现有一种方法可以使用:
JSON.parse(JSON.stringify(Object));
但是,它将更改对象内部所有类型为Date
的变量,我们稍后必须重新设置其格式,这会花费很多精力。
答案 0 :(得分:0)
您可能要寻找的是方法Realm.copyFromRealm(RealmObject)
。
在文档中规定如下:
copyFromRealm:
public <E extends RealmModel> E copyFromRealm(E realmObject)
对已经持久的RealmObject进行非托管的内存中副本。这是一个深层副本,它将复制所有引用的对象。
但是请记住,对托管RealmObject的此非托管副本所做的更改不会更新RealmObject。要将所有更改带回到RealmObject中,您必须通过RealmTransaction显式地执行此操作,您可以在其中更新RealmObject。
此外,您可以使用RealmObject.isManaged()
来检查所选对象当前是否由Realm管理。如果没有,则无需创建非托管副本。