Xamarin迁移:Realm到MongoDB Realm时QueryBasedSyncConfiguration替代方案
MongoDB Realm中QueryBasedSyncConfiguration的替代方案(Xamarin Forms平台)
旧版原生Realm中的QueryBasedSyncConfiguration在新版MongoDB Realm中已正式弃用,对应替代方案根据你的同步需求分为两类:
- 首选方案为灵活同步(Flexible Sync),对应配置类为
FlexibleSyncConfiguration,完全兼容原有查询式同步的动态指定同步数据集的能力,你可以在配置中定义初始同步查询规则,也可以在运行时动态调整同步范围。
Xamarin Forms平台的示例配置代码如下:// 初始化Realm App实例 var realmApp = App.Create("你的MongoDB Realm应用ID"); // 登录用户 var currentUser = await realmApp.LogInAsync(Credentials.Anonymous()); // 构建灵活同步配置 var syncConfig = new FlexibleSyncConfiguration(currentUser) { PopulateInitialSubscriptions = (realm) => { // 此处添加和原有QueryBasedSync逻辑对齐的查询规则 var targetDataQuery = realm.All<你的数据模型>().Where(x => x.OwnerId == currentUser.Id); realm.Subscriptions.Add(targetDataQuery, new SubscriptionOptions { Name = "自定义同步查询名称" }); } }; // 打开同步Realm实例 var realmInstance = await Realm.GetInstanceAsync(syncConfig); - 如果你的业务场景数据分区规则固定、不需要动态调整同步查询,也可以使用
PartitionSyncConfiguration,对应原有分区同步模式的配置,实现指定分区数据的全量同步。
迁移提示:切换为Flexible Sync前需要先在MongoDB Realm后台开启对应同步模式,并配置匹配的权限规则,原有QueryBasedSync的查询逻辑可以直接平移到订阅规则中,运行时也可以通过
realm.Subscriptions的Add/Remove方法动态调整同步范围。
内容的提问来源于stack exchange,提问作者anish shukla
相关产品推荐
相关产品推荐

