当我的规则如下时,我的问题是关于一个用例:
match /collection/{docID} {
allow read,write,update : if isSomethingTrue();
allow read: if request.auth.uid != null && isOnotherFunctionWithGETInside();
allow create: if request.auth.uid != null;
}
如果我可以将阅读规则翻译为:
allow read: isSomethingTrue() || (request.auth.uid != null && isOnotherFunctionWithGETInside())
,如果是,如果isSomething()返回true,第二部分是否不执行?那么它将在惰性模式下评估吗?
这对我来说是一个重要的问题,因为如果我仅交换两个允许读取行的序列(因为第二个中的get()函数),那么账单(服务器读取操作)可能会有很大的不同阅读规则)。
谢谢。
答案 0 :(得分:0)
您所描述的行为在编程语言中称为“短路”。是的,安全规则将使逻辑“或”短路,以避免评估表达式的其余部分。安全规则的API documentation for booleans中对此进行了说明。