Firebase Firestore-单个测试用户导致50K+;阅读

Firebase Firestore-单个测试用户导致50K+;阅读,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我最近一直在尝试一些Firestore安全规则,作为一个单一用户,我发现自己在设置这些规则的第一个小时内就造成了超过10万次的拒绝 我还注意到,在过去的30天里,我的单次使用量已经达到了近100万次,我想一个月内我的平均使用量只会达到1-5公里左右 很明显,我希望在我的规则测试期间会招致更多的拒绝,但为什么这个数字这么高呢?在过去的7天里,我只读取了916个数据库,但不知何故,我的使用量也超出了极限,所以现在我无法访问任何集合 我的规则集,我打算改进它,因为我被切断了测试它的正确性,所以我知道它

我最近一直在尝试一些Firestore安全规则,作为一个单一用户,我发现自己在设置这些规则的第一个小时内就造成了超过10万次的拒绝

我还注意到,在过去的30天里,我的单次使用量已经达到了近100万次,我想一个月内我的平均使用量只会达到1-5公里左右

很明显,我希望在我的规则测试期间会招致更多的拒绝,但为什么这个数字这么高呢?在过去的7天里,我只读取了916个数据库,但不知何故,我的使用量也超出了极限,所以现在我无法访问任何集合

我的规则集,我打算改进它,因为我被切断了测试它的正确性,所以我知道它的错误

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
     match /users/{userID} {
      allow update, write, delete: if request.auth != null && 
        request.auth.uid == userID;
      allow read, create: if request.auth != null;
      match /public_trips/{tripID}/{likedBy} {
        allow read, write: if request.auth.uid != null &&
            request.resource.data.likedBy == likedBy;
      }
    }
  }
}

下图是基于我执行的测试量,我期望我的使用情况会是什么样子(以及它实际报告了什么)

上述情况出乎意料

正如这个配额所示,我已经超过了我当天的阅读限制50K,但正如我所说的firestore只报告>1K

TL;DR

为什么一个用户拒绝了超过10万次

这是因为我的规则不可靠,还是因为我的应用程序效率低下?

TL;博士 你的应用程序效率低下


您的规则没有访问数据库中的其他文档,因此不会导致额外的读取。所以你被拒绝的原因是你提出了那么多的要求。这很可能是因为您对数据建模的方式不是很有效


例如,在餐馆应用程序的情况下,您可能会获取所有的审查文档来计算平均评级和总评级数。相反,您应该将这些字段存储为餐厅文档中的字段,并在添加、更新或删除评论时让云函数更新这些字段。

您是否正在对生产Firestore实例运行自动测试?或者您只是手动测试它?测试不是自动化的,而且唯一现有的firestore实例是dev,所以只有我可以访问它。我的大多数测试都是访问API的开发应用程序,但也有一些来自云firestore测试平台。我将看看我的应用程序是否有突出的地方,因为你很可能是对的。我怀疑一个资源匮乏的流监听的时间太长了。我明天会给你回复,因为这是我的配额限制将重置的时候。你可以尝试使用。它们允许您使用Firebase服务的本地版本,并且没有配额限制。好的,当然,我在假设它们受到相同限制之前就注意到了它们。谢谢你到目前为止的帮助。我能问问你是否认为这些规则有什么问题吗?在声明
/public\u trips/{tripID}/{likedBy}
的情况下,
{likedBy}
应该表示特定
{tripID}
文档下的字段。这是访问文档变量的适当方式吗?@Jake no.请参阅