【问题标题】:How does the increment operation on FirebaseRealtimeDatabase work?Firebase 实时数据库中的增量操作如何工作?
【发布时间】:2021-06-17 11:31:54
【问题描述】:

我查看了 Firebase 文档,发现您可以使用以下行增加数据库中的数据:

Database.database().reference().child("Post").setValue([
         "number" : ServerValue.increment(10)
])

文档上还说“增量操作直接发生在数据库服务器上”,我不太明白这是什么意思。这个操作和类似的操作有什么区别:

// We have previously retrieved the value of number which we have stored in a variable
Database.database().reference().child("Post").setValue([
         "number" : numberOldValue + 10
])

【问题讨论】:

    标签: ios swift firebase-realtime-database


    【解决方案1】:

    而不是您从服务器获取值并执行将整数添加到另一个整数的小“原子”操作,increment 允许您只说出您希望在服务器上增加哪个值。它适用于服务器端,因此您完全无需担心获取当前值。如果它在您发送请求之前在一毫秒内发生变化,它会注意到这一点。

    额外信息:它也比transaction 快得多。看看here

    【讨论】:

      【解决方案2】:

      事务 VS ServerValue

      当处理可能被并发修改损坏的数据时,例如增量计数器,您可以使用事务操作,如果多个用户同时对同一个帖子或客户端加注,使用事务可以防止当前增量不正确有过时的数据。

      ServerValue.increment(10) 的好处让您不必担心获取当前值来增加它,因为它会获取当前值并自动增加发送值

      【讨论】:

        猜你喜欢
        • 2021-07-13
        • 2018-12-25
        • 1970-01-01
        • 2021-08-24
        • 2021-05-20
        • 1970-01-01
        • 1970-01-01
        • 2020-04-23
        • 2021-02-24
        相关资源
        最近更新 更多