2017-10-12 90 views
0

我一直在搞乱我的firebase数据库规则,试图让用户无需身份验证,只编辑我的数据库中的某个孩子,但我似乎无法弄清楚。只允许读/写一个孩子

这里是数据库结构:

enter image description here

所以我试图让用户无需认证编辑VideoID的,但不仅如此,我需要的规则,忽略了房间ID(5555在这个例子中),这意味着它只允许阅读和编辑房间/(roomid)/ videoID

感谢您的各种帮助!

回答

0

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

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

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

的火力地堡规则模拟器(从火力地堡数据库控制台的规则选项卡访问)是测试规则有用发布前: simulator

0

也许是这样的:

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

这将允许与认证用户编辑videoID之外的另一个领域。

但是如果你想连authentificated用户,也只能编辑videoID,那么规则是:

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

记住,当规则设置true它不会遍历独生子女政策,但如果将其设置false它会继续检查孩子的规则。