【发布时间】:2018-10-22 22:54:40
【问题描述】:
我有一个 firebase 数据库实例,我想为某个节点添加一个计数器。
每次用户运行特定操作时,我都想增加节点值。如何在不出现同步问题的情况下做到这一点?如何使用谷歌功能做到这一点?
例如:
database{
node {
counter : 0
}
}
在某个时间 3 个不同的用户读取计数器上的值,并尝试增加它。当它们在同一时间读取时,它们都读取“0”并递增到“1”,但在执行结束时所需的值应该是“3”,因为它被读取了 3 次
==================更新===================
@renaud 指出使用事务来保持已保存数据的同步,但我还有另一种情况,我也需要在读取端完成同步:
例如。 用户读取实际值,据此执行不同的操作并通过增加一个来完成...
在类似环境的 sql 中,我会为此编写一个过程,因为无论用户将如何处理信息,我都会通过递增一个来完成
如果我确实理解@renaud 的回答正确,那么在这种情况下,4 个不同的用户同时读取数据库将获得 0 作为当前值,然后在事务更新时最终存储的值将是 4,但在客户端每个用户就读0
【问题讨论】:
标签: firebase firebase-realtime-database google-cloud-functions