【发布时间】:2025-12-22 06:40:11
【问题描述】:
我正在创建一个 iOS 应用程序,我打算在其中为高级用户提供跨设备功能的数据同步。我发现Realm Sync 是一个很好的解决方案,可以让本地设备上的数据库和云 MongoDB Atlas 保持同步。但是,我不想将非高级用户的数据同步到云数据库。
我正在寻找几种我能想到的方法来防止非高级用户触发 Realm Sync,但我不确定解决这个问题的最佳方法是什么。
-
利用Sync permissions 防止同步 - 我可以存储高级用户 ID 列表,并且只向这些用户授予同步权限。
{ "%%user.id": [ "5f4863e4d49bd2191ff1e623", "5f48640dd49bd2191ff1e624", "5f486417d49bd2191ff1e625" ] } -
Configure Realm objects 在客户端,即如果用户是高级用户,则只允许所有 Realm 对象/模型。
// Get a configuration to open the synced realm. var configuration = user.configuration(partitionValue: "user=\(user.id)") // For non-premium user it would be [User.self] configuration.objectTypes = [User.self, Project.self] Realm.asyncOpen(configuration: configuration) { [weak self](result) in /*...*/ }
我正在寻找解决此问题的见解/推荐方法。
编辑
我还有一些关于以不同方式处理两个用例的其他问题 - 非高级一个是通过仅打开本地 Realm() 而高级一个使用Realm.asyncOpen()。
- 当现有用户切换到高级订阅时如何处理用例?是否应该致电
Realm.asyncOpen()就足够了,还是我需要做任何特殊处理? - 我计划为所有用户(高级 + 非高级)同步我的所有
User(集合中的自定义文档)记录。我的猜测是我应该为我的所有内容和同步的 Realm 打开一个普通的 Realm,配置中只有[User.self]对象。
【问题讨论】:
标签: ios mongodb realm mongodb-realm