在https://firebase.google.com/docs/reference/js/firestore_.transaction我看到四种方法:delete,set,set,get,update.
i我正要构建一个可爱的小藏品查询并将其传递给。 这意味着我们无法使用交易对象获得集合或查询集合的集合。 ICOULD
查询使用查询的.get()方法而不是事务的.get()方法的查询,但是如果收集从我下方变化,则交易最终将处于不一致的状态而不会重试的情况下。我似乎在这里撞墙。我的理解正确吗?我们不能以一致的方式访问交易中的集合吗?
您的理解是正确的。 使用Web和移动SDK时,您必须确定您希望确保在交易完成之前不会更改的自明文档。 如果这些文档提前收集查询,很好。 但是,请考虑一下,如果您必须跟踪(非常大)集合中的每个文档才能完成交易,那将是多么不可估算。 对于后端SDK,您可以在Transaxction内部执行查询,并有效地对查询返回的所有文档进行交易,直到交易中的文档数量限制(500).
。
get()
方法中运行查询(不仅是获取单个文档),但这仅适用于服务器执行。因此,如果您确实需要这样做(例如维护贬义数据的一致性),则可以将该代码放在云功能中并使用服务器端交易