在我爱上react-native和iOS领域之前,我试图了解有关如何处理迁移的更多信息。这句话让我感到关注:
Realm React Native 0.10.0
当前,如上所述,迁移仅限于在打开Realm时更新schema和schemaVersion。尚不支持数据迁移,但将来可能会添加。
我理解这意味着每次对** any schema **进行更改时,我都需要增加schemaVersion 。
如何指定多个架构,每个架构都有自己的架构版本?
这不起作用:
export default new Realm(
{schema: [AppSetting], schemaVersion: 0},
{schema: [Gps], schemaVersion: 3},
{schema: [Waypoint], schemaVersion: 4},
{schema: [FlightPath], schemaVersion: 1},
);
这假设我可能需要经常修改更复杂的架构,直到我做对了。
只要我仅添加新属性,迁移就会简单吗?
我假设我不能重命名或删除现有属性?
非常感谢您提供有关领域迁移的建议,
您需要为整个架构指定一个schemaVersion:
export default new Realm({schema: [AppSetting, Gps, ...], schemaVersion: 0});
当您更新架构中的任何objectSchema时,您需要更改schemaVersion。这意味着某些个体objectSchema在多个schemaVersions中将保持不变,但是我认为这要比为每种对象类型使用不同的版本要简单。
当您使用新的schemaVersion / schema初始化Realm时,将添加所有新属性,并删除和删除所有属性。因此,如果重命名属性,最终将添加一个具有新名称的新属性,并删除旧属性及其数据。现在,如果要将数据从一个属性复制到另一个属性,则需要分两个步骤进行操作,因此旧属性和新属性都同时存在,您可以进行复制。您还需要跟踪是否进行了复制,因此仅在第一次使用新架构打开领域时才执行此操作。如果仅添加属性,则可以避免大多数(如果不是全部)这种复杂性。
我们没有时间完成初始版本的迁移,但是好消息是大多数功能是在内部实现的,只需要通过js API公开即可。运作方式是什么:打开Realm时,您将能够通过迁移功能,这将使您能够访问迁移前的Realm和迁移后的Realm,并允许您根据需要复制数据。我们希望在接下来的几个发行版中完成这一工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句