根据Firestore Transaction中的查询结果编辑文档

问题描述 投票:1回答:1

我目前正在使用Android SDK在Firestore数据库上做一个项目。我需要编写一个事务,我想在“目标”集合中编辑“目标”文档,只有当另一个名为“批次”的集合没有任何文档,其字段名称“destionId”设置为编辑目标文档时ID。我正在检查与.limit(1)集的查询

现在,我想在一个交易中这样做,因为这个应用程序是实时的,并且会被很多人同时使用。如果我没有使用事务,则可能是另一个人可能在我的查询之间添加一个“批处理”文档,该查询用于检查和实际编辑目标文档。所以,我希望每次事务重试时运行查询并检查批处理集合。

但我不确定如何在事务中运行Firestore查询作为其异步。我相信在Android SDK中无法生成阻止查询请求。如果错的话请纠正我。

有人可以帮我理解如何解决这个冲突吗?提前致谢。

android google-cloud-firestore
1个回答
3
投票

您无法在事务内执行查询,也无法根据一组不变的查询结果进行事务处理。您只能通过其ID获取单个文档,并希望稍后在该事务中更改它们。


1
投票

如果它对其他人有帮助,则可以通过管理SDK运行运行查询结果的事务(与Java客户端SDK相反)。查看有关此here的文档。

从数据库中检索文档或查询结果。对所有返回的文档持有悲观锁定。

这个功能也在SO post here中提到。请注意,在相应的客户端JS SDK doc上,get函数的参数只接受documentRef

© www.soinside.com 2019 - 2024. All rights reserved.