安全规则中“或”的含义是什么?

时间:2019-08-20 18:50:04

标签: firebase google-cloud-firestore firebase-security

我已经非常彻底地搜索了此内容,但遗憾的是找不到任何有用的答案,或者根本找不到任何答案。基本上,这是您阻止陌生人,未通过身份验证或另一个用户访问Cloud Firestore中某人文档的方式:

match /collection/{userId} {
    allow write: if request.auth != null && request.auth.uid == userId;
}

但是在那之后,我们还有更复杂的规则,例如:

allow write: if (above snippet) && request.resource.data.write_variable == 1;

那很棒,因为即使Firestore是noSQL,无shema数据库,我们也可以为write操作甚至read操作设置一些标准。在我的情况下,我想要的是允许用户在满足以下条件的情况下写文档:

  • 已通过身份验证,并且userId与它的uid相同。这意味着他只能访问他的文档。
  • 如果write(即我文档中的一个字段)等于1 OR 等于5,则允许write_variable

这就是我似乎找不到or的运算符的问题。是|||还是其他东西。我无法真正测试,因为我无法弄乱已经运行的应用程序,因此请直接回答(是否可以,如果可以,怎么办?)。提前致谢!

2 个答案:

答案 0 :(得分:2)

Firebase安全规则中的逻辑OR运算符与您期望的完全一样:||。所有处理布尔值的运算符都记录在here中。

答案 1 :(得分:1)

firebase控制台中有一个非常有用的工具Simulator-您可以在保存之前测试规则-无需担心现有代码。对于or运算符,就是这样:

`||`