组共享数据的Firebase数据库规则

时间:2019-08-09 13:02:06

标签: firebase firebase-realtime-database firebase-security

我的Web应用程序与99%的应用程序一样,在db中具有一组用户。我可以通过/ user /访问用户,因此我设置了规则,以允许每个用户仅访问其数据。

但是我需要每个用户都加入一个组

/user/34029380432
  - name: realtebo
  - group_id: 123
  - isAdmin: true


/group/123
   - a lot of shared data, all members can erad, only isAdmin can write

如何设置一个规则,该规则仅允许每个组的成员读取它,而仅admin成员写入组数据?!

当然,我可以在每个组和每个组内的设置和侧面下,以数组的形式交换边,成员列表。

但是我无法撰写JavaScript规则。

1 个答案:

答案 0 :(得分:1)

我认为您可以做的是在组对象中包含一条消息和用户节点。您可以使用安全规则访问该数据节点的父对象,并通过使用exist()来查看该用户是否是用户对象节点的成员

/group/123
   - messages // a lot of shared data, all members can read, only isAdmin can write
   - users // list of user uids that are added to this group
   - admins // list of admin uids

"group": {
  "$groupId": {
    "messages": {
      ".read": "data.parent().child('users').child(auth.uid).exists()",
      ".write": "data.parent().child('admins').child(auth.uid).exists()"
    }
  }
}