Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用“>;=”比较firebase DB安全规则中的getPriority()值操作人员_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

Can';t使用“>;=”比较firebase DB安全规则中的getPriority()值操作人员

Can';t使用“>;=”比较firebase DB安全规则中的getPriority()值操作人员,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我正在使用对象的优先级检查用户的权限。然而,我遇到了奇怪的行为-当我尝试在DB安全规则(realtime DB)中将优先级与大于或等于运算符(>=)进行比较时,我得到了权限拒绝错误。但是,当我使用equal运算符(==)时,它工作得很好。我需要使用>=运算符,因为我正在检查给定操作的最小权限值 以下是具体的例子: { "rules": { "tiles": { "$boardId": { ".read": "root.child('boards/'+$bo

我正在使用对象的优先级检查用户的权限。然而,我遇到了奇怪的行为-当我尝试在DB安全规则(realtime DB)中将优先级与大于或等于运算符(>=)进行比较时,我得到了权限拒绝错误。但是,当我使用equal运算符(==)时,它工作得很好。我需要使用>=运算符,因为我正在检查给定操作的最小权限值

以下是具体的例子:

{
  "rules": {
    "tiles": {
      "$boardId": {
        ".read": "root.child('boards/'+$boardId+'/owner').val() === auth.uid || root.child('boards/'+$boardId+'/visibility').val() === 'public' || root.child('boardsPermissions/' + $boardId + '/' + auth.uid).getPriority() >= 10",
        ".write": "root.child('boards/'+$boardId+'/owner').val() === auth.uid || root.child('boardsPermissions/' + $boardId + '/' + auth.uid).getPriority() >= 20"

      }
    }
  }
}
如果尝试使用用户
user-1
在权限节点中使用此DB记录写入位置
tiles/board-1/tile-1

'permissions/board-1/user-1': {
    .priority: 20
 }
我得到了一个错误,但是如果我将写入规则更改为下面的形式,我可以写入给定的节点

".write": "root.child('permissions/' + $boardId + '/' + auth.uid).getPriority() === 20"
我知道第一个条件为false(用户不是互动程序的所有者)。我相信这可能是一个错误,但我想先确认一下。有人能看一下吗

另一个奇怪的是,它只工作了一次,我成功地写入了DB,但后来又停止了工作。发布安全规则和它们在DB中生效之间是否存在延迟


谢谢你的帮助。

我也问过。请注意,当您交叉张贴!我怀疑当您的优先级是字符串时会发生这种情况(例如,您从输入字段中设置它而不转换为数字)。在RTDB规则中,
==
被混淆地转换为
=
,因此
“100”===100
将起作用,但
=
需要一个数字,因此
“100”>=40
可能不起作用。