firebase.database.ServerValue.TIMESTAMP返回一个Object

时间:2016-10-24 09:10:04

标签: javascript firebase firebase-realtime-database

我正在使用Firebase开展网络项目。 我打电话给:

firebase.database.ServerValue.TIMESTAMP

然后它返回:

{.sv: "timestamp"}

如何使用javascript获取Firebase服务器的时间?

4 个答案:

答案 0 :(得分:6)

Firebase documentation中的这个代码段显示了如何设置时间戳:

var userLastOnlineRef = firebase.database().ref("users/joe/lastOnline");
userLastOnlineRef.onDisconnect().set(firebase.database.ServerValue.TIMESTAMP);

要在代码中使用值,您需要侦听值:

userLastOnlineRef.on('value', function(snapshot) {
    console.log(snapshot.val());
});

您将看到值事件触发两次(在设置值的设备上):一次用于时间戳的初始客户端估计,一次用于服务器的实际值。

答案 1 :(得分:2)

预计您会在写入Firebase数据库的数据中使用firebase.database.ServerValue.TIMESTAMP。它是服务器上实际时间的占位符,在服务器接收和写入数据时将被替换。

当您从数据库中读取数据或者您拥有的任何侦听器可能已经配置了fire(child_addedchild_changedvalue个事件时,您将看到实际的时间戳值等)。

文档here中解释了这一点:

{TIMESTAMP: non-null Object}
     

一个占位符值,用于自动填充由Firebase服务器确定的当前时间戳(自Unix纪元以来的时间,以毫秒为单位)。

答案 2 :(得分:0)

只需添加更多内容即可@cartant回答:

admin.database.ServerValue.TIMESTAMP返回一个非null的对象,并且是一个占位符值,用于自动填充当前时间戳。 它不包含实际时间戳。数据库将在执行命令时替换该占位符。

database.ref内使用它时,它可以按预期工作,但在它外面只是一个无用的对象。

有关更多信息,请参见此SO Answer

答案 3 :(得分:0)

这就是我要做的:

firebase.firestore.FieldValue.serverTimestamp()

来源:

https://firebase.google.com/docs/reference/js/firebase.firestore.FieldValue