在我的Firestore安全规则中,我希望在文档更新时首先评估条件,并且只有条件返回true时,才评估另一个条件,在我的情况下,这恰好使接听电话。
例如,我检查是否触发了安全规则的文档:
type
== confidential
(条件返回true
或false
)因此,如果type
为not confidential
,即如果第一个条件失败,那么在这种情况下,我就不想进行访问呼叫,因为限制我的批写。
只有在第一个条件满足的情况下,我才能检查第二个条件(即拨打访问电话)吗?
答案 0 :(得分:1)
您所描述的称为“布尔AND”运算符,并且已针对Firestore安全规则in the reference documentation进行了记录。
几乎所有现代语言中的所有AND运算都会以您描述的方式“短路”。也就是说,如果其中一个条件为假,则布尔值的计算将停止,仅当条件为真时,才从左至右继续计算。
allow read: if firstCondition() && secondCondition() && thirdCondition();
这将仅在每个布尔条件为true时才准备就绪,而在任何布尔条件为false时都将停止。