Can';t使用“>;=”比较firebase DB安全规则中的getPriority()值操作人员
我正在使用对象的优先级检查用户的权限。然而,我遇到了奇怪的行为-当我尝试在DB安全规则(realtime DB)中将优先级与大于或等于运算符(>=)进行比较时,我得到了权限拒绝错误。但是,当我使用equal运算符(==)时,它工作得很好。我需要使用>=运算符,因为我正在检查给定操作的最小权限值 以下是具体的例子: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
{
"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
可能不起作用。