繁体   English   中英

访问 Firebase 实时数据库规则集中的 object 属性

[英]Accessing object property in Firebase Realtime Database ruleset

我将有关旅行的数据存储在 Firebase 实时数据库中。 我定义了一些用户组。 我只希望来自组“vips”的用户阅读具有 freePlaces == 0 的旅行,而所有其他人阅读剩余的旅行。

我试图设置这样的访问规则:

{
  "rules": {
      "trips":{
          "$trip":{
            ".read": "root.child('users').child('vips').child(auth.uid).exists() || $trip.child('freePlaces') > 0"
           }
       }
   }
}

但是 Firebase 告诉我 $trip 没有方法/属性“孩子”。

我试着用不同的方式来做

{
  "rules": {
      "trips":{
          "$trip":{
            ".read": "root.child('users').child('vips').child(auth.uid).exists() || root.child('trips').child($trip).child('freePlaces') > 0"
           }
       }
   }
}

但是 Firebase 说 Invalid > expression: left operand must be a number or string.

什么地方出了错?

我建议密切注意规则中每个表达式的类型:

  • $trip是一个string ,这解释了为什么不能在其上调用.child 如果你想得到节点的孩子,你可以这样做: data.child('freePlaces')
  • root.child('trips').child($trip).child('freePlaces')是数据库中的一个位置, 无法与>进行比较 如果您想要节点的值,请使用.val()

所以结合这些,你的第一个片段应该是:

data.child('freePlaces').val() > 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM