Realm 移动平台:public,私有和共享数据库?

Realm Mobile Platform: public, private and shared databases?

这个问题来自熟悉 CloudKit 并且正在迁移到 Realm Mobile Platform 的人的观点。

有了 CloudKit,我们就有了私有、public 和共享数据库的概念。私有属于用户,public每个用户都可以看到,共享数据库就像是用户私有数据库的视图,用于在有限数量的用户(朋友)之间共享数据。

假设我想允许两个用户在一个项目上进行协作,用户 A 将创建该项目并邀请用户 B 进行协作,我将在 realm 中使用哪种机制来实现这一点,而无需完全开放用户 A 的私有用户 B 的领域(只有特定于项目的记录用户 A 想要共享)?

现在 Realm 权限细化到数据库 (Realm) 级别。无法授予仅适用于给定领域中数据子集的特定权限。

我们路线图上的一个高优先级项目是支持使用同步领域的部分副本的功能。同时,我们建议为给定用户创建多个私有领域来代表权限的每个子集。例如,您可能为给定用户拥有一个真正私有的领域,以及该用户的一个或多个领域,代表可以与其他用户共享的数据。在您的特定情况下,您可能希望为每个项目创建一个领域,而不是为用户拥有的所有项目创建一个领域。

至于实际授予权限,您可以创建一个 RLMSyncPermissionValue 对象并将其传递到 RLMSyncUser 上适当的 API(例如 -[RLMSyncUser applyPermission:callback:]-[RLMSyncUser revokePermission:callback:]) 授予或撤销权限。这需要知道用户的身份,这是在创建用户时由 Realm 对象服务器生成的。

您还可以创建一个 RLMSyncPermissionOffer 对象来表示您的用户对另一个用户的邀请,以访问他们的领域(即项目)。这样的对象会生成一个字符串,该字符串可以通过不同的渠道(例如电子邮件)传递给另一个用户,并用于创建一个 RLMSyncPermissionOfferResponse 对象来接受该提议。

最后,除了我之前提到的部分复制支持之外,我们还有一些其他项目正在筹备中,以便更轻松地协作使用同步领域;我们希望很快有更多的分享。