Firestore安全规则-批量读取计数

时间:2020-03-13 19:52:54

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

如果我批量更新文档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次读取还是完全没有读取?

2 个答案:

答案 0 :(得分:2)

firebaser here

为此,我必须与我们的团队联系。第一个反馈是,它不会计入一次安全规则评估运行中可以拨打的最大电话数。

因此,我们的想法是,由于它实际上并未读取文档,因此它也可能不会计入读取的文档。就是说:我要多询问一下是否可以确认这一点,所以请耐心等待。

答案 1 :(得分:0)

您是否使用两个不同的文档?

如果是这种情况,那么将执行两次读取。