Firebase 安全规则 newData.val() 与 data.val() 相比
Firebase security rules newData.val() compared to data.val()
我不明白为什么此规则未通过验证
".validate": "newData.val() < data.val()"
但这将通过验证:
".validate": "newData.val() < 70 "
在模拟器中我输入了以下值:69、70 和 71
在第一条规则中,所有3个数字的验证都失败了;
而第二次验证它按预期通过了 69 值,并按预期失败了 70 和 71...
为什么 "newData.val() < data.val()" 的验证不起作用!?
PS 我将比较字符串固定为整数,如屏幕截图所示。
如果您的新数据值是一个数字,您可能不想将它与字符串进行比较:'70'。如果新值是一个字符串,并且在模拟器 "Data JSON" 框中作为字符串(带引号)输入,如“70”,则验证 newData.val() < '70'
有效。
好吧,这会很愚蠢,主要是新手犯的错误,但我发现了我自己的愚蠢错误!!!
在我的安全规则中我有
"users": {
"$uid": {
"tokens": {
".validate": "newData.isNumber() && newData.val() < data.val()"
}
}
},
...
'users' 有一个小写的 u 而不是大写的 U,这是我在数据结构中的键,所以 data.val() 无法像我预期的那样从用户那里提取。 ..
愚蠢的错误....所以请确保使用正确的大小写,因为安全规则是区分大小写的,因为我刚刚发现!!!
PS 疯狂的部分是正确触发的其余 .read 和 .write 安全规则只是 data.val() 函数无法提取值......它会如果 Firebase 拒绝所有安全措施,事情会容易得多,可能会更快发现我的错误……Firebase 应该缩小差距!?
我不明白为什么此规则未通过验证
".validate": "newData.val() < data.val()"
但这将通过验证:
".validate": "newData.val() < 70 "
在模拟器中我输入了以下值:69、70 和 71
在第一条规则中,所有3个数字的验证都失败了; 而第二次验证它按预期通过了 69 值,并按预期失败了 70 和 71...
为什么 "newData.val() < data.val()" 的验证不起作用!?
PS 我将比较字符串固定为整数,如屏幕截图所示。
如果您的新数据值是一个数字,您可能不想将它与字符串进行比较:'70'。如果新值是一个字符串,并且在模拟器 "Data JSON" 框中作为字符串(带引号)输入,如“70”,则验证 newData.val() < '70'
有效。
好吧,这会很愚蠢,主要是新手犯的错误,但我发现了我自己的愚蠢错误!!!
在我的安全规则中我有
"users": {
"$uid": {
"tokens": {
".validate": "newData.isNumber() && newData.val() < data.val()"
}
}
},
...
'users' 有一个小写的 u 而不是大写的 U,这是我在数据结构中的键,所以 data.val() 无法像我预期的那样从用户那里提取。 ..
愚蠢的错误....所以请确保使用正确的大小写,因为安全规则是区分大小写的,因为我刚刚发现!!!
PS 疯狂的部分是正确触发的其余 .read 和 .write 安全规则只是 data.val() 函数无法提取值......它会如果 Firebase 拒绝所有安全措施,事情会容易得多,可能会更快发现我的错误……Firebase 应该缩小差距!?