Firebase如何比较数据规则中的变量(== vs ===)?

时间:2016-08-12 17:57:34

标签: javascript firebase comparison firebase-authentication firebase-security

  

以下提供的信息直接来自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}}

所以我的问题是哪一个是正确的方法呢?当我们在规则中使用“==”和“===”时会发生什么?

2 个答案:

答案 0 :(得分:6)

如果您查阅Firebase数据库安全规则API documentation,您会看到equals的以下定义:

  

===(等于)

     

...
  注意:: == IS TREATED AS ===。如果您在安全规则中使用==,则在规则运行时它将被转换为===。

not equals

  

!==(不等于)

     

...
  注意:!=已被处理!==。如果您在安全规则中使用!=,则会在规则运行时将其转换为!==。

答案 1 :(得分:1)

我认为Firebase会将所有===视为==(同样全部!== as!=)。

我的证据是Bolt Compiler将你的bolt文件中的三元运算符转换为规则JSON输出中的双运算符。