我有一个应用程序,将由许多用户使用,有时他们会在同一时间发布到同一文档,Firebase将如何处理。有什么办法可以防止这种情况发生吗?
我的场景是这样的:有一家餐厅,你可以在那里点餐,但数量有限,假设有5个,同时有10个用户在该文档上发帖,我如何防止这种情况发生?附注:我在RN应用程序中使用侦听器,所以它会一直检查数量的变化,但如果用户比应用程序中的更新速度更快怎么办?
发布于 2020-01-26 01:38:34
为了控制多个并发写入,您应该使用事务来确保每个客户端不会覆盖其他客户端正在执行的操作。该事务将确保一次只有一个客户端可以写入文档。在您的事务中,您可以检查某些文档字段是否处于不应超过的限制,如果超过,则使事务失败。
请阅读documentation on transactions以更好地了解它是如何工作的。
发布于 2020-01-25 21:30:15
您可以使用“接受或拒绝查询”的概念。
您的安全规则还可以根据查询的约束接受或拒绝查询。request.query变量包含查询的limit、offset和orderBy属性。例如,您的安全规则可以拒绝任何未将检索的最大文档数限制在特定范围内的查询:
allow list: if request.query.limit <= 5;此外,您应该考虑使用cloud functions,而不是直接从客户端更新值。更清楚地说,您可以通过HTTP请求调用函数。
https://stackoverflow.com/questions/59909594
复制相似问题