Docs 菜单
Docs 主页
/ /
Atlas Device SDKs
/ /

基于分区的同步 - Node.js SDK

在此页面上

  • 分区值
  • 打开基于分区的同步 Realm
  • 打开捆绑的基于分区的同步 Realm
  • 从基于分区的同步迁移到 Flexible Sync
  • 迁移后更新客户端代码
  • 删除和手动创建订阅

Atlas Device Sync有两种同步模式: Flexible Sync和基于分区的同步。 我们建议使用Flexible Sync。 此页面上的信息旨在为现有应用程序使用基于分区的同步的用户提供支持。

注意

将同步模式与 Atlas Device Sync 相匹配

当您在客户端应用程序中使用Atlas Device Sync时,您的实施必须与您在后端应用配置中选择的同步模式相匹配。 您的应用程序只能使用一种同步模式。 您不能在同一应用中混用基于分区的同步和Flexible Sync。

当您为后端应用配置选择基于分区的同步时,您的客户端实施必须包含分区值。 这是您在配置基于分区的同步时选择的分区键字段的值。

分区值决定客户端应用程序可以访问哪些数据。

您可以在打开同步 Realm 时传入分区值。

要使用基于分区的同步打开域 ,请调用Realm.open() 。 传入一个配置对象,该对象必须包含定义SyncConfiguration对象的 sync属性。 在 SyncConfiguration 中,必须包含userpartitionValue

const config = {
schema: [Car],
sync: {
user: app.currentUser,
partitionValue: "myPartition",
},
};
const realm = await Realm.open(config);
const config: Realm.Configuration = {
schema: [Car],
sync: {
user: app.currentUser!,
partitionValue: "myPartition",
},
};
const realm = await Realm.open(config);

重要

基于分区的同步配置支持离线登录您可以使用背景同步立即打开 realm,也可以使用基于分区的同步在超时后打开 realm。

打开使用基于分区的同步的捆绑同步 Realm时,您必须使用原始 Realm 配置中使用的相同分区键。 如果您使用不同的分区键,则 SDK 在打开捆绑域时会引发错误。

您可以将 App Services Device Sync 模式从基于分区的同步迁移到 Flexible Sync。 迁移是一个自动过程,无需对应用程序代码进行任何更改。 自动迁移需要 Realm Node.js SDK 版本 11.10.0 或更高版本。

通过迁移,您可以保留现有的 App Services 用户和身份验证配置。 Flexible Sync提供更通用的权限配置选项和更细粒度的数据同步。

有关如何将App Services App从基于分区的同步迁移到Flexible Sync的更多信息,请参阅迁移Device Sync模式。

从基于分区的同步自动迁移到Flexible Sync不需要对客户端代码进行任何更改。 但是,为了支持此功能,Realm 会通过以下方式自动处理两种同步模式之间的差异:

  • 自动为每个Realm 对象类型创建Flexible Sync订阅,其中partitionKey == partitionValue

  • partitionKey字段注入到每个对象中(如果尚不存在)。 这是自动Flexible Sync订阅所必需的。

如果您需要在迁移后更新客户端代码,请考虑更新客户端代码库以删除隐藏的迁移功能。 在以下情况下,您可能需要更新客户端代码库:

  • 您在客户端代码库中添加新模型或更改模型

  • 添加或更改涉及读取或写入 Realm 对象的功能

  • 您希望对同步的数据实施更细粒度的控制

进行以下更改,将基于分区的同步客户端代码转换为使用 Flexible Sync:

  • flexible:true添加到您打开同步 Realm 的SyncConfiguration对象

  • 将相关属性添加到对象模型中,以便在 Flexible Sync 订阅中使用。 例如,您可以添加ownerId属性,使用户能够仅同步自己的数据。

  • 删除自动Flexible Sync订阅并手动创建相关订阅。

有关 Flexible Sync 权限策略的示例,包括如何为这些策略进行数据建模的示例,请参阅Device Sync权限指南。

当您从基于分区的同步迁移到Flexible Sync时,Realm 会自动为您的应用创建隐藏的Flexible Sync订阅。 下次添加或更改订阅时,我们建议您:

  1. 删除自动生成的订阅。

  2. 在客户端代码库中手动添加相关订阅。

这样,您就可以在代码库中同时查看所有订阅逻辑,以便将来进行迭代和调试。

有关自动生成的Flexible Sync订阅的更多信息,请参阅将客户端应用程序迁移到Flexible Sync。

后退

将数据流式传输至 Atlas