Cloud-Firestore功能可在达到限制数量后停止更改集合/文档?

时间:2020-01-26 17:48:34

标签: javascript firebase react-native google-cloud-firestore

如果另一个集合中的文档数量达到一定数量,是否可以停止写入文档? 请记住并发-多个用户同时写作!

2 个答案:

答案 0 :(得分:0)

确定:

  1. 是否已在Cloud Function(可调用或https)中写入Firestore

  2. 在函数中,有一个if子句,用于在写入之前检查文档数

  3. 您还必须执行验证逻辑,确定用户是否有权在该函数中进行写操作,而不是通过Firestore规则。

关于实际计算文档的数量,最好的方法取决于文档的数量以及写入的速度。该SO线程解决了这些问题:Cloud Firestore collection count

答案 1 :(得分:0)

您可以使用Firebase's server-side security rules来阻止对该文档的写入,该selected items会针对来自任何客户端SDK的写入自动执行。

例如,如果您有一个文档,其编号必须大于0才能被允许编写新文档,则可以使用以下命令强制执行该操作:

service cloud.firestore {
  match /databases/{database}/documents {
    match /orders/{order} {
      // Only allow an order for a product of there's any stock left
      allow create: 
        if get(/databases/$(database)/documents/products/$(request.resource.data.productid)).data.stock > 0
    }
  }
}