firebase - 我们不能在事务中查询集合吗?
问题描述
查看https://firebase.google.com/docs/reference/js/firebase.firestore.Transaction我看到四种方法:删除、设置、获取、更新。
我正要构建一个可爱的小集合查询并将其传递给 .get,但我看到文档说 .get “读取提供的DocumentReference引用的文档”。
看来这意味着我们无法使用 Transaction 对象获取集合或查询集合。
我可以使用查询的 .get() 方法而不是事务的 .get() 方法来查询那些,但是如果集合从我下面发生变化,事务将最终处于不一致的状态而无需重试。
看来我在这里碰壁了。我的理解正确吗?我们不能以一致的方式访问事务中的集合吗?
解决方案
你的理解是正确的。使用 Web 和移动 SDK 时,您必须确定您希望确保在交易完成之前不会更改的各个文档。如果这些文档提前来自集合查询,那很好。但是请想一想,如果您必须跟踪(非常大的)集合中的每个文档以完成您的事务,那将是多么不可扩展。
但是,对于后端 SDK,您可以在事务中执行查询并有效地对查询返回的所有文档进行事务处理,最多可以达到事务中文档数的限制 (500)。
推荐阅读
- mysql - 允许 NULL 的 InnoDB 索引大小(MySQL)
- python - 稀疏张量以减少训练时间
- javascript - 用对象理解 .map 和 Stringify
- mac-address - 路由器或适配器的 Mac 地址
- python - 出现错误“调用 Python 对象时超出最大递归深度”
- timer - STM32 TIM1 内部时钟(CK_INT)
- python - 如果项目的长度为 1 或更少,则从字典中删除项目
- python-3.x - 将 matplotlib 图例标记大小设置为常数
- c# - 如何从 WPF 中的 MainWindow 访问 ChildWindow 文本框
- python - 将输出发送到字典