翻转条件或返回firebase实时规则中的错误访问

翻转条件或返回firebase实时规则中的错误访问,firebase,firebase-realtime-database,firebase-authentication,firebase-security,Firebase,Firebase Realtime Database,Firebase Authentication,Firebase Security,我正在学习Firebase的安全规则,但当我翻转条件时,我看到一些奇怪的东西,或者它返回true作为例外,但返回错误 这是JSON树 { "-LnOK0641vZRqJ1k5tCc" : { "category" : "Sports", "eq" : "ndndnjelwjdjrkeldnhfkelenjrkkee\n", "id" : 4, "instruction" : "nfhrjejwkldjfjejejhdhejejejejje", "tit

我正在学习Firebase的安全规则,但当我翻转条件时,我看到一些奇怪的东西,或者它返回true作为例外,但返回错误

这是JSON树

{
  "-LnOK0641vZRqJ1k5tCc" : {
    "category" : "Sports",
    "eq" : "ndndnjelwjdjrkeldnhfkelenjrkkee\n",
    "id" : 4,
    "instruction" : "nfhrjejwkldjfjejejhdhejejejejje",
    "title" : "title11",
    "username" : "bdjsjd"
  },
  "-LnOby-AZv2D-FkgBopU" : {
    "category" : "Sports",
    "eq" : "bdnwjksbxksndjejwldjjdjekwldnd",
    "id" : 5,
    "instruction" : "hejelwldhfhekekdhdjejekdk",
    "title" : "bsndnfhdkwmsbdjs",
    "username" : "bdjsjd"
  },
  "-LnOc2Y5DT5XvwJv6NJu" : {
    "category" : "Sports",
    "eq" : "ndnskajdhfiwldhdoelw",
    "id" : 6,
    "instruction" : "jsksksklfhfjejeksjfjiei",
    "title" : "5ndnsjsndbdkwlaldhjd",
    "username" : "bdjsjd"
  }  
}
返回数据时的Firebase规则


"$uid" : {
".read" : true,
".write" : "((!data.exists() && auth != null) || (auth.uid == root.child('Users').child(data.child('username').val()).child('uid').val()))"
      }

Firebase拒绝返回

"$uid" : {
 ".read" : true,
 ".write" : "((auth.uid == root.child('Users').child(data.child('username').val()).child('uid').val()) || (!data.exists() && auth != null) )"

      }
我翻转或只翻转,结果不一样

编辑
当我使用管理员权限时,被拒绝的权限将返回允许的访问权限

当评估安全规则中的条件时出错,整个规则立即失败

在第一个规则集中,您可以正确地防范错误,因此规则引擎会评估:

!data.exists() && auth != null) || 
如果没有数据,也没有经过身份验证的用户,则允许该操作(因为您有一个
|

在第二个规则集中,您的条件以以下内容开始:

auth.uid == ...

如果没有经过身份验证的用户,
auth
不存在或
null
auth.uid
抛出错误,导致操作被拒绝。

谢谢。。。你的意思是,如果auth为null,我将它与
auth.uid
一起使用,它将像NPE一样抛出并直接拒绝,而不返回下一个
|
代码?