Firebase获取服务器时间戳

时间:2017-08-26 03:59:50

标签: javascript firebase

我正在尝试构建我的firebase数据库。

年/月/日/消息 例如2017/8月26日/消息

因此,我需要让firebase服务器有时间来设置新的消息引用路径。 我使用了Firebase.database.ServerValue.TIMESTAMP但它返回的占位符只会在插入时转换为纪元时间。因此,我的'createdAt'字段是正确的。但我需要一种方法来创建我想要的路径结构。

let epoch = Firebase.database.ServerValue.TIMESTAMP
console.log(`epoch : ${epoch}`) // it returns an object
let date = new Date(epoch) // date creation fail here
console.log(`date : ${date}`)
let messagesRef = db.ref(`messages/${date.getFullYear()}/${date.getMonth()}/${date.getDate()}`)
let newMessage = {
  createdAt: epoch    
}
messagesRef.push(newMessage)

1 个答案:

答案 0 :(得分:4)

有一些方法,但我可以想到的最简单,最简单的方法是推送消息,然后获取消息以获取刚刚推送的时间戳。

另一种方法是获取新pushRef的密钥



messagesRef.push().key




然后从解码firebase密钥获取时间戳(因为它们是由时间戳生成的) decode firebasekey

@cartant状态,您可以使用服务器时钟偏移



var offsetRef = firebase.database().ref(".info/serverTimeOffset");
offsetRef.on("value", function(snap) {
  var offset = snap.val();
  var estimatedServerTimeMs = new Date().getTime() + offset;
});