尝试在iOS设备/模拟器上的新版本/安装上执行Realm.open({schema: [Schema]})
时出现此错误。一切都在Android应用程序上正常工作,因为它之前从未使用迁移更改schemaVersions。
我对此错误的理解是,设备上Realm文件的schemaVersion与schemaVersion: 0
的默认Realm.open({schema: [Schema]})
不同。我的另一个理论是我的应用程序试图在同一文件上的现有打开的Realm配置期间打开Realm配置。
为了解决我的第一个理论,我一直试图用Realm.clearTestState()
和Realm.deleteFile({schema: [Schema]})
重置域文件无效。对于第二个,我在Realm.open()
中放置了并发的setTimeout()
个实例,这样一次只能打开一个Realm实例。
有没有其他方法可以尝试重置Realm文件,以便设备上的Realm文件和配置都是相同的模式?
答案 0 :(得分:3)
事实证明,我并没有在每个实例中使用完全相同的模式打开Realm。意思是我从我的realm.js
文件中导出了多个对象模式,并且是单独打开它们而不是整体打开它们,我认为这是正确的方法。
所以基本上,我这样做......
Realm.open({schema: [object1, object2, object3]})
Realm.open({schema: [object4, object5]})
当我应该这样做的时候:
const Schema = [object1, object2, object3, object4, object5];
Realm.open({schema: Schema});
希望这可以帮助其他任何人遇到这个问题,因为我访问了Github和StackOverflow上的所有其他类似的错误报告,并且没有遇到过这个提示。
答案 1 :(得分:0)
我今天遇到了相同的错误消息,并且我正在运行本机程序。上面的方法可以帮助我使程序重新开始顺利运行;但是,稍后,在我来回浏览不同的页面之后,并且一个页面具有多个功能需要利用Realm进行查询/插入后,错误消息再次容易出现。
最后,我发现,根本原因是必须正确关闭实例化的Realm实例。希望以下代码段对您有所帮助:
Realm.open({schema: [object1]}).then(realm => {
realm.write(() => {
// do whatever necessary in this transaction.
}
// Remember to close it at last
realm.close();
}
以下是官方网站中有关过滤的示例代码,也可以作为参考: https://realm.io/docs/javascript/latest/#filtering