【问题标题】:How to handle the concurrent write to a single field in a single document in Firestore?如何处理对 Firestore 中单个文档中单个字段的并发写入?
【发布时间】:2021-07-18 08:27:39
【问题描述】:

我想知道如何处理 Firestore 中的并发写入。

场景:

HTML 表单直接从前端提交。将应用安全规则。我已经使用 Cloud Functions 设置了回调来进行后期操作。我还处理了回调的唯一时间。 (这样每个回调每个请求只调用一次,参考这个article,第2.4点)

对于每个回调,我想总结一下“金额”字段,它是用户提供的整数类型。总金额将存储在单独的文档中,例如summaryCollection/summaryDoc/totalAmount

如果同时有 10 个用户同时提交表单,例如 用户1:数量:10 用户2:数量:20 用户3:数量:30 . . . 用户 10:数量:100

totalAmount 的值是否正好是 (10 + 20 + ... + 100) = 550??

我是否需要在回调 onCreate 中添加 Firestore 事务代码?是否会同时调用 2 个或更多回调?因为我需要阅读以获取 totalAmount 的最新值并从新金额中求和。

另外,如果我不使用回调方法并创建一个云函数来处理 POST 请求,如何处理并发写入totalAmount? Firestore Transaction能解决问题吗?

非常感谢,

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    如果你按照第一篇文章的说明pointed out,你应该不需要任何交易代码。

    Firestore Transaction 更适合编辑和/或查阅多个文档。如果您的电话仅针对您的文档,并且只有总金额,则最好使用onSnapshot 之类的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      • 2019-05-11
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多