Json 防止删除的Firebase规则

Json 防止删除的Firebase规则,json,firebase,firebase-realtime-database,firebase-security,Json,Firebase,Firebase Realtime Database,Firebase Security,我有一个沿这条线的火基结构- root { groups { gid: { //group ID authid: ... //group creator's uid members: { //uid of members ... } posts: { ... //posts ID } } } } 我想要这些功能- 任何用户都可以创建新组。这意味着我需要将“/g

我有一个沿这条线的火基结构-

root {
 groups {
    gid: {  //group ID
       authid: ... //group creator's uid
       members: { //uid of members
          ...
       }
       posts: {
          ...  //posts ID
       }
    }
  }
}
我想要这些功能-

  • 任何用户都可以创建新组。这意味着我需要将“/groups/”的写入权限授予所有授权的人。但它们不应将整个节点设置为null。因此,我可以这样做
    ”.write:“(!data.exists()&&auth.uid!=null)| |(data.exists()&&newData.exists()”
  • 只有作者才能删除单个组。这意味着我需要 向作者授予将单个组节点设置为null的权限。这是我遇到的问题。因为,较浅的规则会覆盖较深的规则。因此,如果我只编写

    “团体”:{ “$gid”:{ .write:“!newData.exists()&&data.child('authid').val()==auth.uid” } }

    这将被完全忽略

  • 我不希望任何人,甚至是作者,将组中的单个节点设置为null。这意味着作者可以删除整个组,但不能删除成员节点


  • 现在,您要求在写入操作之后没有数据

    你想要的是要么没有数据

    ".write": "
        (data.exists() && !newData.exists() && data.child('authid').val() === auth.uid)
     || (data.exists() && newData.exists() && data.child('members').child(auth.uid).exists())
     || (!data.exists() && newData.child('authid').val() === auth.uid)
    "
    
    行:

  • 允许所有者删除
  • 允许任何成员进行更新(假定所有者也是成员)
  • 允许任何人创建,只要他们自己是所有者)

  • 我要求任何人都可以创建一个组。创建组的人将成为所有者。但是,并非每个人都可以更新组。只有成员可以更新,但只有“发布”节点不知道这些规则做什么?我可能遗漏了一些东西,在这种情况下,获得帮助的最佳方式是显示操作的代码,该操作不符合您的要求。我已更新了问题。我已经删除了posts部分和members部分