在文档中,交易失败,当:
事务读取在事务之外修改的文档。
我想知道这是否也适用于读取查询,它可能会返回多个文档(通过.where('x', '==', 'y')
(。如果在事务期间某个时候再次执行Read查询,则会返回更多结果,那么事务是否仍然失败?
为了说明我的问题,假设我有一组具有以下模式的汽车:
{
ownerId: string,
make: string,
horsepower: int
...
}
现在我在transaction.get()
电话中查询某位车主的汽车:
transaction.get(firestore.collection('cars').where('ownerId', '==', '123'))...
假设我收到了一辆有2辆车的Snapshot
,基于这些车,我想在交易中发挥一些魔力。在交易过程中,会为该车主添加另一辆车(因此它不是初始快照的一部分(。在这种情况下,交易会失败吗?
附言:我并不是在寻找不同的解决方案,上面的例子是虚构的,我只是想了解在这种情况下交易的行为。
假设我收到了一个有2辆车的快照,基于这些车,我想在交易中发挥一些魔力。在交易过程中,会为该车主添加另一辆车(因此它不是初始快照的一部分(。在这种情况下,交易会失败吗?
绝对不会。由于新添加的汽车不属于初始交易的一部分,它不会失败。添加的汽车被视为新添加的对象,而不是修改过的对象。
他们在文件中提到:
事务读取在事务之外修改的文档。
因为事务绝对需要与服务器进行往返通信,以确保事务中的代码成功完成。因此,如果某个特定文档被已经涉及的事务以外的操作修改,那么事务就会失败。