如果另一个集合中的文档数量达到一定数量,是否可以停止写入文档? 请记住并发-多个用户同时写作!
答案 0 :(得分:0)
确定:
是否已在Cloud Function(可调用或https)中写入Firestore
在函数中,有一个if
子句,用于在写入之前检查文档数
您还必须执行验证逻辑,确定用户是否有权在该函数中进行写操作,而不是通过Firestore规则。
关于实际计算文档的数量,最好的方法取决于文档的数量以及写入的速度。该SO线程解决了这些问题:Cloud Firestore collection count
答案 1 :(得分:0)
您可以使用Firebase's server-side security rules来阻止对该文档的写入,该会针对来自任何客户端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
}
}
}