以下提供的信息直接来自Firebase网站。
"$user": {
".read": "auth.uid == $user",
".write": "auth.uid == $user"
}
当客户端尝试访问/ users / barney时,$ user默认值 location将匹配$ user等于“barney”。所以.read 规则将检查auth.uid ==='barney'。结果,阅读 / users / barney仅在客户端使用a进行身份验证时才会成功 “巴尼”的说法。
Firebase擅长记录,但我没有找到关于使用“==”或“===”的深入讨论。只要我知道它就像JavaScript一样。
根据他们的文件
如果auth.uid ==='barney'。结果,阅读 / users / barney仅在客户端使用a进行身份验证时才会成功 “巴尼”。
有时我见过
{{1}}
所以我的问题是哪一个是正确的方法呢?当我们在规则中使用“==”和“===”时会发生什么?
答案 0 :(得分:6)
如果您查阅Firebase数据库安全规则API documentation,您会看到equals的以下定义:
===(等于)
...
注意:: == IS TREATED AS ===。如果您在安全规则中使用==,则在规则运行时它将被转换为===。
!==(不等于)
...
注意:!=已被处理!==。如果您在安全规则中使用!=,则会在规则运行时将其转换为!==。
答案 1 :(得分:1)
我认为Firebase会将所有===视为==(同样全部!== as!=)。
我的证据是Bolt Compiler将你的bolt文件中的三元运算符转换为规则JSON输出中的双运算符。