Firebase文档声明事务用于可能需要频繁更新字段的情况(例如,像计数器一样)。但我不明白,为什么我不能从数据库中读取数据使用监听器并将数据写入节点?我知道这很粗略,但我想知道使用这种方法有什么缺点。
答案 0 :(得分:3)
想象一下两个客户端都在尝试同时更新数据库中的某些计数的情况。我们称之为客户A和客户B.他们的行为是这样命令的:
在这种情况下,count 应为3,但数据库中仍保留值为2的值。现在计数显然是错误的,并且事务可以通过以特定顺序强制写入来阻止该问题,并且在第一个客户端更新它之后强制第二个客户端重新读取计数。这意味着其中一个客户端从1更新为2,第二个客户端从2更新为3.在这种情况下,使用事务是确保正确性的唯一方法。