Firestore事务读取集合后,新增未读取文档会触发重启吗?
Firestore事务重启问题解答
- 核心结论:这个事务不会自动重启
- 具体原因:Firestore的事务重试机制只针对事务执行过程中读取过的文档。你的事务一开始读取的是已存在的t1、t2、t3文档,并没有读取t6(当时t6还不存在)。当其他用户在事务执行期间创建t6时,这个操作不属于事务读取过的文档的变更,Firestore不会判定为事务冲突,因此不会触发重启。
- 注意事项:这种逻辑存在竞态隐患——事务检查完t6不存在后,还没完成更新操作时,其他用户可能已创建t6,最终会导致操作失败(比如抛出“文档已存在”的错误)。正确的做法是在事务中显式读取t6文档(哪怕它当前不存在),这样当其他用户创建t6时,Firestore会检测到这个文档的状态变更(事务读取过它的“不存在”状态),就会自动重启事务,重新执行检查逻辑。
内容的提问来源于stack exchange,提问作者wangsun6
相关产品推荐
相关产品推荐

