npm 错误:由于React native(Realm)中的以下错误,需要迁移

dfddblmv  于 2023-04-12  发布在  React
关注(0)|答案(3)|浏览(130)

我们得到的错误像以下而APK文件安装特定的操作系统版本(8.0)在Android.但是,这是工作正常,而发展.
错误如下

Error: Migration is required due to the following errors:

ReactNativeJS: - Property 'Some Field' has been added.
ReactNativeJS: - Property 'other Field' has been added.

我们在我们的React Native项目中使用Realm DB。根据一些论坛的建议,我们已经删除了节点模块并重置缓存,也删除了nodemodules/realm。并完成了npm安装。
但是,尝试安装APK时仍然显示相同的错误,但是,当我们在开发模式下运行时,这个问题不会发生.
注:此问题仅发生在特定设备(操作系统版本8.0),其他设备工作正常。
有什么建议吗?

vql8enpb

vql8enpb1#

我知道这是晚了,但对于任何人谁来这里的答案:Realm需要使用称为迁移的东西来解决对其架构的任何更新。这是考虑到当您将应用程序从一个版本更新到另一个版本时,可能会对数据库进行一些更改,这可能会使您的数据不一致。最简单的方法是删除所有当前数据库数据,如果您更改架构,请添加deleteRealmIfMigrationNeeded添加配置,如下所示
Realm.open({ schema: [BookSchema], deleteRealmIfMigrationNeeded: true, })
另一种方法是购买创建一个迁移您自己的描述在官方文档

j13ufse2

j13ufse22#

非SDK接口的使用限制
为了帮助确保应用程序的稳定性和兼容性,平台限制了一些非SDK方法和字段的使用;无论您是尝试直接访问这些方法和字段、通过反射还是使用JNI,这些限制都适用。在Android 9中,您的应用可以继续访问这些受限接口;平台使用提示信息和日志条目提醒您注意这些信息。如果您的应用显示此类提示信息,请务必采取受限接口以外的实施策略。如果您觉得没有其他策略可行,则可以提交错误,请求重新考虑该限制。
对非SDK接口的限制包含更多重要信息。您应查看这些信息,以确保您的应用继续正常运行。
从Android 9开始(API级别28),平台会限制应用可以使用的非SDK接口。只要应用引用非SDK接口或尝试使用反射或JNI获取其句柄,这些限制就会适用。设置这些限制的目的是帮助改善用户和开发人员体验,降低用户崩溃和开发人员紧急部署的风险。有关此决定的详细信息,请参见Improving Stability by Reducing Usage of non-SDK Interfaces.
请参阅here了解更多信息。

6yt4nkrj

6yt4nkrj3#

可以在添加或移除属性时更改架构版本

const config = {
  schema: [Person],
  // increment the 'schemaVersion', since 'age' has been added to the schema
  schemaVersion: 2,
  deleteRealmIfMigrationNeeded // use this for development only to delete the database when a schema mismatch requires a migration
};

更多信息https://www.mongodb.com/docs/realm/sdk/react-native/realm-database/change-an-object-model/

相关问题