何时使用 Firebase 事务

When to use Firebase transactions or not

是否有必要使用 Save data as transactions Technic if a value only increases?. In the example Firebase doc social blogging app starCount 可以上涨或下跌,因此使用交易技术权利是合乎逻辑的。但如果价值只会增加,我想交易技术就不需要了吧?要么? 多个用户同时增加一个值权

编辑:2021 年 8 月 17 日

现在不用事务也可以解决这个问题。我们可以简单地增加一个值使用:

rootRef.child("score").setValue(ServerValue.increment(1));

对于decremenet,需要下面一行代码:

rootRef.child("score").setValue(ServerValue.increment(-1));

计数器可以向上或向下增长,这意味着用户可以点击计数器来增加值,但是如果他再次点击也可以减少值。当我们使用交易时,我们不会只使用来增加或减少计数器,如果知道在我们的应用程序中有可能两个用户可以同时进行相同的操作,我们就会使用。如果我们不使用交易,计数器可以 increased/decreased 只有一次,而不是两次,如果两个用户同时采取行动。

如果我们使用交易,两个动作将在不同的执行线程中发生,所以一个计数器不可能 increased/decreased 只有一次,即使两个用户同时采取相同的动作时间.

总而言之,每当您认为两个或多个用户可能同时更改您的 Firebase 数据库中的相同值时,请使用事务。