gpt4 book ai didi

ios - 如何在 iOS 上处理 Realm React Native 迁移和 schemaVersion?

转载 作者:可可西里 更新时间:2023-11-01 05:43:20 27 4
gpt4 key购买 nike

在我爱上 react-native 和 iOS 上的 realm 之前,我试图了解更多关于如何处理迁移的信息。这句话让我担心:

Realm React Native 0.10.0

Migrations are currently limited to updating the schema and schemaVersion when opening a Realm as outlined above. Data migrations are not yet supported but may be added in the future.

我理解这意味着我需要增加 schemaVersion 每次更改**任何架构**。

如何指定多个架构,每个架构都有自己的架构版本?

这不起作用:

export default new Realm(
{schema: [AppSetting], schemaVersion: 0},
{schema: [Gps], schemaVersion: 3},
{schema: [Waypoint], schemaVersion: 4},
{schema: [FlightPath], schemaVersion: 1},
);

这是假设我的更复杂的模式可能需要经常修改,直到我把事情做好。

只要我只添加新属性,迁移会很简单吗?

我假设我无法重命名或删除现有属性?

非常感谢关于 Realm 迁移的建议,

最佳答案

您需要为整个模式指定一个单一的 schemaVersion:

export default new Realm({schema: [AppSetting, Gps, ...], schemaVersion: 0});

当您更新架构中的任何 objectSchema 时,您需要更改架构版本。这意味着一些单独的 objectSchema 将在多个 schemaVersion 中保持不变,但我认为这比为每种对象类型设置不同版本要简单。

当您使用新的 schemaVersion/schema 初始化 Realm 时,所有新属性都会添加,缺少的属性会被删除。因此,如果您重命名一个属性,最终将添加一个具有新名称的新属性,并删除旧属性及其数据。目前,如果您想将数据从一个属性复制到另一个属性,您需要分两步完成,因此旧属性和新属性同时存在,允许您进行复制。您还需要跟踪是否进行了复制,以便仅在第一次使用新模式打开 Realm 时执行此操作。如果您只是添加属性,则可以避免大部分(如果不是全部)这种复杂性。

我们没有时间完成初始版本的迁移,但好消息是大部分功能都是在内部实现的,只需通过 js api 公开即可。事情将如何运作,您将能够在打开 Realm 时传递迁移功能,这将使您可以访问迁移前和迁移后的 Realms,从而允许您根据需要复制数据。我们希望在接下来的几个版本中完成此操作。

关于ios - 如何在 iOS 上处理 Realm React Native 迁移和 schemaVersion?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36022863/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com