更改列类型后如何迁移RealmJS数据库



我在react本机应用程序中使用realmjsDB,其中我有一个模式settings。我想将该架构的属性类型从int更改为string。所以我知道我需要执行迁移,所以我决定执行linear迁移。对于迁移,我遵循了Realm文档中的示例,最终完成了如下操作:

const schemaList = [schemaV1,schemaV2];
let nextSchemaIndex = Realm.schemaVersion(Realm.defaultPath);
while (nextSchemaIndex < schemaList.length) {
const migratedRealm = new Realm(schemaList[nextSchemaIndex++]);
migratedRealm.close();
}
export default new Realm(schemaList[schemaList.length - 1]);

schemaV1是数据库的旧版本,schemaV2是更改属性类型后数据库的最新版本。schemaV2还具有如下迁移功能:

if (oldRealm.schemaVersion < 1) {
const oldObjects = oldRealm.objects(TBL_MOBILE_SETTING);
const newObjects = newRealm.objects(TBL_MOBILE_SETTING);
for (let i = 0; i < oldObjects.length; i++) {
newObjects[i].module    = oldObjects[i].module;
newObjects[i].setting   = oldObjects[i].setting;
}
}

但最后,当我试图运行该应用程序时,它崩溃了,并显示错误消息

需要数据库迁移

这是否意味着schemaV2中的迁移函数永远不会运行?如果是,如何确保所有迁移功能都正常运行?还是我错过了什么?

编辑

我发现RealmJS中不允许更改列类型,于是我添加了一个新列,并尝试执行迁移,但仍然存在相同的错误。

问题出在我的猜测上。没有调用迁移函数。我必须创建一个export const函数,并在index文件中调用迁移函数,因为它是在应用程序启动时调用的文件。

相关内容

  • 没有找到相关文章

最新更新