首页 > 解决方案 > 我们不能在事务中查询集合吗?

问题描述

查看https://firebase.google.com/docs/reference/js/firebase.firestore.Transaction我看到四种方法:删除、设置、获取、更新。

我正要构建一个可爱的小集合查询并将其传递给 .get,但我看到文档说 .get “读取提供的DocumentReference引用的文档”。

看来这意味着我们无法使用 Transaction 对象获取集合或查询集合。

可以使用查询的 .get() 方法而不是事务的 .get() 方法来查询那些,但是如果集合从我下面发生变化,事务将最终处于不一致的状态而无需重试。

看来我在这里碰壁了。我的理解正确吗?我们不能以一致的方式访问事务中的集合吗?

标签: firebasegoogle-cloud-firestore

解决方案


你的理解是正确的。使用 Web 和移动 SDK 时,您必须确定您希望确保在交易完成之前不会更改的各个文档。如果这些文档提前来自集合查询,那很好。但是请想一想,如果您必须跟踪(非常大的)集合中的每个文档以完成您的事务,那将是多么不可扩展。

但是,对于后端 SDK,您可以在事务中执行查询并有效地对查询返回的所有文档进行事务处理,最多可以达到事务中文档数的限制 (500)


推荐阅读