使用Realm Mobile Platform在app用户之间共享数据

时间:2017-05-11 08:17:28

标签: android realm

我有一个关于用户访问其他用户创建的数据的问题。我将在下面通过案例研究进行解释。

我正在使用Realm Mobile Platform。该应用程序使用Realm Auth允许用户通过电子邮件,谷歌和Facebook帐户注册。此时我正在使用REALM_URL:......“:9080 /〜/ name”。

我将尝试通过以下示例解释我想要实现的内容。 我有UserA和UserB的成像。一旦用户在应用程序中注册(使用SyncUser),他们就会被重定向到项目活动。每个用户都可以创建自己的项目。在Realm Mobile Platform(Realm Mobile Database)之前,用户数据存储在用户设备中。现在,因为我在REALM_URL中使用“〜”,当用户输入项目活动时,活动会请求并显示该用户的所有现有项目。

该应用程序还有另一项具有搜索功能的活动,用户可以在其中搜索公共项目。例如,UserA公开Project1。 UserB应该能够找到Project1并关注它,或者要求所有者成为贡献者。一旦UserB跟随或作为贡献者访问,Project1应该显示在UserB的Project活动中。

问题是如何使这成为可能。

选项A :为所有用户使用唯一且通用的域。 从REALM_URL中删除“〜”,并将不同的字段(如“ownerID”)添加到项目RealmObject中,并将订阅项目列表添加到用户RealmObject中。这将允许用户查询项目活动中的所有项目(拥有和订阅),并在搜索活动中搜索公共项目。

选项B :使用两个域,一个用于用户数据,一个用于项目。 私有将有一个包含“〜”的REALM_URL,公众将是绝对的。稍后,当新用户注册应用程序时,将通过访问控制提供权限(mayRead,mayWrite,mayManage)。

哪一个会更好?还有其他更好的选择吗? 感谢

1 个答案:

答案 0 :(得分:1)

你的问题的答案是,这取决于。领域移动平台(RMP)将自动处理您的所有数据共享,冲突解决以及跨用户的同步。通过这种方式,RMP充当服务器和单一事实来源。

OptionA和OptionB都需要这个单一的事实来源和一些用户访问控制知识。

让我们来看看每个选项的优缺点。

OptionA:

  • 赞成
    • 只有一个数据库,Realm
    • 完成冲突解决
    • 移动方面的工作量明显减少,你只需听一听 服务器
  • 缺点
    • 可能难以进行用户访问控制

<强> OptionB:

  • 赞成
    • 用户的私人数据是完全独立的
  • 缺点
    • 您将负责在本地数据库和服务器之间编写数据冲突解决方案
    • 由于存储多个数据库,您的应用很可能会更大。

根据我的经验,自己处理数据库冲突解决方案真的很痛苦。似乎 OptionA 是您更好的选择。

相关问题