我有一个关于将模块添加到领域配置以将领域限制为仅包含类的子集的问题。我知道可以通过定义自定义 RealmModule 然后在领域配置中指定该模块来完成。
我现在面临的情况是我已经在我的聊天应用程序的生产版本中定义了两个领域(例如领域 A 和 B)。领域 A 存储从我的 REST 服务器获取的数据,领域 B 存储与聊天线程对应的数据。我的应用中有 12 个模型类。这 12 个模型中有 11 个用于存储 REST 服务器数据,而剩下的 1 个模型用于存储聊天线程数据。
到目前为止,我还没有意识到可以使用 RealmModule 类来限制可以包含在特定领域的模式中的模型。所以目前,我的生产应用程序有两个领域,所有 12 个模型都用于这两个领域的架构中。在我的应用程序的下一个版本中,我对与 REST 数据相对应的几个模型进行了一些更改,并编写了迁移来解决这些更改。我现在面临的问题是,即使我只更改了与 REST 数据对应的模型,我也必须为 REST 领域和聊天线程领域提供迁移,因为这两个领域的架构都包含所有类。
在包含 RealmModule 之后,我正在添加用于在生产应用程序和当前开发版本中实例化领域配置的代码
我的生产代码:
RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(mContext)
.name(realmName + ".realm")
.schemaVersion(DB_SCHEMA_VERSION)
.encryptionKey(byteKey)
.build();
添加RealmModule后的代码:
RealmConfiguration restRealmConfiguration = new RealmConfiguration.Builder(mContext)
.name(realmName + ".realm")
.modules(new RestRealmModule())
.schemaVersion(REST_DB_SCHEMA_VERSION)
.migration(new RestDBMigration())
.encryptionKey(byteKey)
.build();
我的问题是,我能否安全地创建两个 RealmModule 类,一个包括所有 REST 模型类,一个包括聊天线程模型类,并部署这些更改而不会在从当前生产应用程序过渡到这个新版本的过程中造成任何问题?
当我部署新版本的应用程序时,Realm 将如何处理生产环境中已经存在的 .realm 文件(包含模式中的所有模型),该应用程序指定 RealmModules 限制领域模式仅处理所有模型类的子集?
如果我的方法不正确,那么有人可以解释我应该如何解决这个问题吗?
谢谢。