You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firestore runTransaction并发场景下读取文档返回值特性咨询

问题解答

你在新发起的事务中执行const isPresent = doc.data().present;读取操作时,获取到的是此前已完成提交的旧值,不会读到其他未提交事务的临时变更。

核心原理

Firestore事务采用快照隔离(Snapshot Isolation)机制:

  • 每个事务启动时会拉取当前所有已提交数据的一致性快照,该事务内所有读取操作都基于这个固定快照执行
  • 未提交的事务变更属于事务私有状态,不会对外可见,不会影响其他并行事务的读取结果

并发冲突处理规则

如果前一个未提交的事务先完成了对目标文档的写入,后启动的事务在提交阶段会检测到文档版本不匹配,此时Firestore会自动重试整个事务逻辑,重试阶段事务会拉取包含前序事务提交结果的最新快照,才能读到更新后的值。

额外代码提示

你提供的示例事务中更新的是population字段,初始化文档中未定义该字段,实际运行不会报错,会自动新增该字段,但如果是要修改present字段需要注意修正字段名。


内容的提问来源于stack exchange,提问作者KK2491

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 23:48:02