编写ServerValue时间戳由服务器计算两次?

时间:2017-03-31 09:55:47

标签: swift firebase

我在项目中使用ServerValue时间戳,我想通过使用时间戳作为键来创建关系。

当" setValue"执行时间戳计算两次,我必须观察" .childAdded"和#34; .childChanged"获取正确的时间戳值。 (ಠ_ಠ)https://firebase.google.com/docs/reference/ios/firebasedatabase/api/reference/Classes/FIRServerValue

使用过的框架: Firebase(3.15.0), FirebaseAnalytics(3.7.0), FirebaseAuth(3.1.1), FirebaseCore(3.5.2), FirebaseDatabase(3.1.2), FirebaseInstanceID(1.0.9)

Swift中的示例代码段:

    ref = FIRDatabase.database().reference()

    ref.child("test").observe(.childAdded, with: { snapshot in

        if let value = snapshot.value as? Int {
            print("Child added, timestamp value: \(value) ")
        }
    })

    ref.child("test").observe(.childChanged, with: { snapshot in

        if let value = snapshot.value as? Int {
            print("Child change, timestamp value: \(value) ")
        }
    })

    ref.child("test").setValue(["one" : FIRServerValue.timestamp()]) { error, ref in
        print("New child inserted.")
    }

控制台输出:

  • 已添加子项,时间戳值:1490950004556
  • 儿童更改,时间戳值:1490950005970
  • 插入新子。

Imgur

如果setValue由其他用户(其他连接的客户端)执行,那么只有" childAdded"事件正在调用哪个很好:)

参考此评论https://stackoverflow.com/a/30244373/4427983,似乎时间戳首先由firebase框架在本地计算。我可以以某种方式禁用此功能并强制框架仅在服务器端计算时间戳值吗?

0 个答案:

没有答案