只允许读/写一个孩子

时间:2017-10-12 14:54:03

标签: firebase firebase-realtime-database

我一直在搞乱我的firebase数据库规则,试图允许没有身份验证的用户只编辑我数据库中的某个孩子,但我似乎无法弄明白。

这是数据库结构:

enter image description here

所以我试图允许没有身份验证的用户编辑videoID,但不仅如此,我还需要规则来忽略房间ID(本例中为5555),这意味着它只允许读取和编辑< strong> rooms /(roomid)/ videoID

感谢各种帮助!

2 个答案:

答案 0 :(得分:0)

也许是这样的:

{
  "rules": {
     ".read": true,
     ".write": "auth != null",  
     "rooms": {
       "$roomId": {
           "videoID": {
             ".write": true
           }
       }
     }
  }
}

允许具有身份验证功能的用户编辑videoID旁边的其他字段。

但如果你想要甚至认证的用户,也只能编辑videoID,那么规则是:

{
  "rules": {
     ".read": true,
     ".write": false,  
     "rooms": {
       "$roomId": {
           "videoID": {
             ".write": true
           }
       }
     }
  }
}

请记住,当规则集true不会遍历子规则时,但如果设置false,它将继续检查子规则。

答案 1 :(得分:0)

Firebase数据库规则允许变量,并且可以在不同深度处具有不同的规则。

在您的情况下,以下规则允许任何用户(经过身份验证或未经过身份验证)访问/rooms/$roomid/videoID但只有经过身份验证的用户才能访问整个/rooms/树。

{
  "rules": {
    "rooms": {
      ".read": "auth != null",
      ".write": "auth != null",
      "$roomid": {
        "videoID": {
          ".read": "true",
          ".write": "true",
        }
      }
    }
  }
}

Firebase规则模拟器(可从Firebase数据库控制台的“规则”标签访问)对于在发布之前测试规则非常有用:  simulator