Firebase规则根据其他无法正常工作的相关数据提供读取权限

所以我正在使用Firebase制作一个日历应用程序,而且我遇到了一些障碍.

我的数据库结构是这样的:

- calendar
  - $year
    - $month
      - $day
        - $uid
          - name
          - arrivalStatus
- users
  - $uid
    - name
    - team

所以我想要做的是,同一个团队中的人必须能够阅读日历中彼此的条目.我已经设定了这样的规则:

{
 "rules": {
   "users": {
      "$uid": {
        ".read": "auth != null && auth.uid == $uid",
        ".write": "auth != null && auth.uid == $uid"
      }
   },
   "calendar": {
    "$year":{
     "$month":{
       "$day":{
        "$uid":{
          ".read": "auth != null && 
                    root.child('users/'+auth.uid+'/team').exists() && 
                    root.child('users/'+$uid+'/team').val() == root.child('users/'+auth.uid+'/team').val()",
          ".write": "auth != null && auth.uid == $uid"
          }
        }
      }
    }
  }
 }
}

但无论出于何种原因,当通过模拟运行时,无论您在哪个团队,都会批准该请求.我错过了一些明显的东西吗

编辑:

所以基本上我们假设这个数据集:

-firecalender
 -calendar
  -2016
   -9
    -30
     -gsdfgd
      -Name: "MG"
      -Status:"PM"
-users
  -abcd
    -name: "Tester"
    -team: "bc"
  -efg
    -name: "noteam"
    -team: "funny inc"
  -gsdfgd
    -name: "bossman"
    -team : "bc"

在这种情况下,abcd应该能够读取Calendar中的每个gsdfgd信息,但是应该拒绝efg访问.

最佳答案 我认为你的问题是你正在使用==而不是===.

链接示例:https://firebase.google.com/docs/database/security/user-security

点赞