仅当Firestore安全规则中的前一个条件返回true时,才如何评估条件

时间:2018-10-02 22:56:11

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

在我的Firestore安全规则中,我希望在文档更新时首先评估条件,并且只有条件返回true时,才评估另一个条件,在我的情况下,这恰好使接听电话。

例如,我检查是否触发了安全规则的文档:

  1. 具有字段 type == confidential(条件返回truefalse
  2. 如果先前的条件返回true,则仅我想通过进行访问调用来检查当前正在更新文档的User对象中的UserType字段。 / strong>

因此,如果typenot confidential,即如果第一个条件失败,那么在这种情况下,我就不想进行访问呼叫,因为限制我的批写

只有在第一个条件满足的情况下,我才能检查第二个条件(即拨打访问电话)吗?

1 个答案:

答案 0 :(得分:1)

您所描述的称为“布尔AND”运算符,并且已针对Firestore安全规则in the reference documentation进行了记录。

几乎所有现代语言中的所有AND运算都会以您描述的方式“短路”。也就是说,如果其中一个条件为假,则布尔值的计算将停止,仅当条件为真时,才从左至右继续计算。

allow read: if firstCondition() && secondCondition() && thirdCondition();

这将仅在每个布尔条件为true时才准备就绪,而在任何布尔条件为false时都将停止。