如果我批量更新文档A和B,并且A的规则执行getAfter(B)
,B的规则执行getAfter(A)
,那么我是否需要为这些文件进行2次读取?因为它们还是批处理的一部分。
示例规则:
match /collA/{docAid} {
allow update: if getAfter(/databases/$(database)/documents/collA/${docAid}/collB/{request.resource.data.lastdocBidupdated}).data.timestamp == request.time
&& ...
}
match /collA/{docAid}/collB/{docBid} {
allow update: if getAfter(/databases/$(database)/documents/collA/${docAid}).data.timestamp == request.time
&& getAfter(/databases/$(database)/documents/collA/${docAid}).data.lastdocBidupdated == docBid
&& ...
}
那么这2次读取,每个规则1次读取还是完全没有读取?
答案 0 :(得分:2)
firebaser here
为此,我必须与我们的团队联系。第一个反馈是,它不会计入一次安全规则评估运行中可以拨打的最大电话数。
因此,我们的想法是,由于它实际上并未读取文档,因此它也可能不会计入读取的文档。就是说:我要多询问一下是否可以确认这一点,所以请耐心等待。
答案 1 :(得分:0)
您是否使用两个不同的文档?
如果是这种情况,那么将执行两次读取。