【问题标题】:Transaction within Batch Write Firebase批量写入 Firebase 中的事务
【发布时间】:2022-01-25 10:06:16
【问题描述】:

如果我正在对多个文档进行批量写入,我可以为每批进行一次事务吗?

我想更新多个文档,但想确保每个文档的更新不会覆盖其他用户所做的任何并发更新。

这可能吗?

【问题讨论】:

    标签: google-cloud-firestore


    【解决方案1】:

    来自 transactions and batched writes 上的 Firebase 文档:

    Cloud Firestore 中有两种原子操作:

    事务:事务是对一个或多个文档的一组读写操作。

    批处理写入:批处理写入是对一个或多个文档的一组写入操作。

    因此,如果您需要写入的值取决于文档中的现有值,请使用事务;否则使用批量写入。你不能混搭这些。

    由于您说的是多个用户可能会覆盖彼此的结果,因此听起来您需要一个事务。

    【讨论】:

    • 对,您将如何对多个文档进行事务以确保它是全有或全无操作?事务的编写方式是 1. 获取文档快照 2. 执行一些逻辑 3. 更新该文档。因此,如果我们想对多个文档进行事务处理,请调用 for 循环对要更新的每个文档进行事务处理?但这并不能确保全有或全无操作......或者也许我们不做文档快照,而是做一个查询快照?
    • 事务也是原子的,就像批处理一样,也可以写多个文档,就像批处理一样。唯一的区别是事务也可以读取文档,而批处理只能写入。
    • 谢谢弗兰克,没有意识到你回复了这个帖子,我继续删除了我的另一个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 2018-08-03
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多