增加firebase数据库中子项的项

时间:2017-11-04 16:32:37

标签: java android firebase firebase-realtime-database

My firebase realtime database

点击Android应用中的 like 按钮时,我想将项目 l 增加1。

我知道的唯一方法是首先通过 ValueEventListener 检索 l 的值,然后递增该值(来自app)并更新 l 在数据库中达到该值。

我认为当2个或更多用户同时尝试同时增加相同值时,可能会出现许多问题。

所以,请给我一个正确的解决方案来做到这一点,没有错误。

2 个答案:

答案 0 :(得分:0)

您的担忧称为并发或并行(取决于您对该术语的准确程度)。

你必须使用一个事务,一个事务是一种方法,它将创建一种带有要修改的数据的 bridge ,这个通信将一直保留到计算为止完成。

因此,您获取数据然后添加一个数据,然后修改数据。由于这是实时的,不止一个用户同时这样做很可能没有负面影响(严重的实时数据库是在不到几毫秒的时间内计算出来的,延迟是因为互联网的速度)。

这是documentation。对于任何数据交换,事务听起来像通用名称,但不是,是一种方法。

还有一件事值得一提,如果您需要在UI上执行某些操作或使用界面回调,则必须使用onComplete方法执行此操作。

答案 1 :(得分:0)

firebase Java SDK中有一种新方法ServerValue.increment()

因为不需要往返,所以性能更好,价格更便宜。

API文档here

您可以使用它递增或递减(1-1)。