【问题标题】:Sharing data among app user using Realm Mobile Platform使用 Realm 移动平台在应用程序用户之间共享数据
【发布时间】:2017-05-11 08:17:28
【问题描述】:

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

我正在使用 Realm 移动平台。该应用程序使用 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 的项目活动中。

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

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

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

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

【问题讨论】:

    标签: android realm


    【解决方案1】:

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

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

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

    选项A:

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

    选项B:

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

    根据我的经验,自己处理数据库冲突解决方案确实很痛苦。看来 OptionA 是您最好的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      • 1970-01-01
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多