Javascript Firebase如何比较数据规则中的变量(==vs===)?
下面提供的信息直接来自Firebase网站。 当客户端尝试访问/users/barney时,默认值为$user 位置将匹配$user等于“barney”。因此,请阅读 规则将检查auth.uid是否为“barney”。因此,阅读 /只有当客户端通过 “巴尼”的名字 Firebase擅长记录,但我没有发现任何关于使用“==”或“==”的深入讨论。只要我知道它的工作原理和JavaScript一样 根据他们的文件 如果auth.uid=='barney'。因此,阅读 /只有当客户端通过 “巴尼”的名字 有时我看到Javascript Firebase如何比较数据规则中的变量(==vs===)?,javascript,firebase,comparison,firebase-authentication,firebase-security,Javascript,Firebase,Comparison,Firebase Authentication,Firebase Security,下面提供的信息直接来自Firebase网站。 当客户端尝试访问/users/barney时,默认值为$user 位置将匹配$user等于“barney”。因此,请阅读 规则将检查auth.uid是否为“barney”。因此,阅读 /只有当客户端通过 “巴尼”的名字 Firebase擅长记录,但我没有发现任何关于使用“==”或“==”的深入讨论。只要我知道它的工作原理和JavaScript一样 根据他们的文件 如果auth.uid=='barney'。因此,阅读 /只有当客户端通过 “巴尼”的名字
"$user": {
".read": "auth.uid == $user",
".write": "auth.uid == $user"
}
所以我的问题是,哪种方法是正确的?当我们在规则中使用“==”和“==”时会发生什么情况?我认为Firebase将所有===视为==(类似地,所有!==视为!=)
我的证据是,将bolt文件中的三重运算符转换为规则JSON输出中的双运算符。如果您查阅Firebase数据库安全规则API,您将看到以下定义: ==(等于) …
注意::==被视为==。如果在安全规则中使用==,则在运行规则时,它将被转换为=== 以及: !== (不平等) …
注意:!=被视为!==如果您使用!=在您的安全规则中,它将被转换为!==当规则运行时
你的问题与你的不同是什么?据我所知,那里的答案回答了你的问题。考虑到它声称表达式是“类似JavaScript的”,因此除非有相反的文档,
=
和==
的相同含义可能适用?我想知道Firebase是否将“==”和“==”视为相同!嗯,它说语法是“类似JavaScript”。除非他们告诉你一些其他的东西,否则这难道不能告诉你==
和===
做什么吗?我以为它确实喜欢JavaScript,但我没能找到这方面的信息。即使他们做了“auth.uid=='barney'”,这也会与他们的文档相矛盾。因为如果他们使用“==”,这意味着他们正在检查auth.uid是否也是字符串,而不是比较“auth.uid”的内容@user2884707bond“用于检查规则表达式中的两个变量是否具有相同的类型和值”对于>=和是相同的
"$user": {
".read": "auth.uid == $user",
".write": "auth.uid == $user"
}