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

组共享数据的Firebase数据库规则,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,与99%的应用程序一样,我的Web应用程序在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 我如何设置一个

与99%的应用程序一样,我的Web应用程序在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
我如何设置一个规则,只允许每个组的成员读取它,只允许管理员成员写入组数据

当然,我可以交换侧,movin成员列表,作为数组,在每个组和设置下,在每个组内,一个或多个管理员id


但我无法编写javascript规则

我认为您可以做的是在组对象中设置一个messages and users节点。您可以在安全规则上访问该数据节点的父对象,并通过使用exists()查看该用户是否是用户对象节点的成员


假设您使用的是实时数据库,请使用数据库的JSON更新您的问题(文本,无屏幕截图)。您可以通过单击溢出菜单中的“导出JSON”链接来实现这一点(⠇) 在您的上。然后还添加您希望允许或拒绝的读/写操作的代码。最后,请包括一些您已经编写的规则。
/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()"
    }
  }
}