Firebase 与其他用户共享数据

Bra*_*amH 5 android data-sharing firebase-authentication firebase-realtime-database

我想使用 Firebase 创建可由用户创建的项目列表,然后他可以指定其他用户与之共享该列表(以便他们也可以修改其内容)。我计划使用以下结构来做到这一点:

在此输入图像描述

因此,用户部分指定用户拥有的列表。然后节点“lists”,创建的所有列表都有一个唯一的 id,并且为每个列表指定其成员:

在此输入图像描述

在此示例中,Rick 是列表的管理员,Tom 只是成员。例如,现在我希望规则仅允许在“items”节点下读取和写入(如果用户 ID 存在于“members”节点下)。

现在我有两个问题: 1. 这种方法是否正确,或者我的整个数据结构是否应该为此目的而有所不同?2. 如果结构很好,我应该如何编写规则才能获得上述行为,以及如何为每个列表生成唯一的 id?

Fra*_*len 4

乍一看,这似乎是一个合理的起点。我只需将“与键相同的值”替换为简单的true, 以节省一些字节的存储/带宽。除此之外,在不了解所有用例的情况下很难给出更多“硬”建议。

您可能还需要考虑最近的一项更改:安全规则现在可以验证查询,这意味着您可能不需要索引/users/$uid/lists。我建议您尝试一下,看看它是否适合您的用例。

要仅允许该列表的成员读取该列表,可以将这些规则作为起点:

{
  "rules": {
    "lists": {
      "$listid": {
        "items": {
          ".read": "
            data.parent().child('members').child('admin').val() === auth.uid ||
            data.parent().child('members').child(auth.uid).exists()
          "
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

该规则的第一行.read授予管理员读取权限。然后,第二行向所有其他用户授予读取权限。

最后:一如既往,我建议阅读NoSQL 数据建模并观看面向 SQL 开发人员的 Firebase