2016-09-20 47 views
0

在我的應用程序,我用這個代碼僅監聽當前時間之後增加的兒童:只有listent按日期最後孩子們在火力地堡

var start = new Date().getTime(); 

firebase.database().ref(path).orderByChild('created').startAt(start).on('child_added', function(value){ 
    console.log(value.val()); 
}); 

在瀏覽器中,這種方法效果很好。只有當我在當前時間之後開始添加它時,我纔會看到該孩子。

在智能手機中,此方法不起作用。它只在我開始在一定的秒數後添加一個孩子時纔有效。我認爲這是因爲智能手機的當前時間與服務器的當前時間不同。

有沒有辦法解決這個問題,而不必採取最後一個元素?

回答

1

如果手機上的時鐘關閉,將無法可靠工作。

Firebase檢測本地時鐘到服務器時間的偏移量,並將其暴露在值.info/serverTimeOffset中。您可以使用此作爲documentation on clock skew解釋來校正時鐘偏差:

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

閱讀鏈接的文檔更全面的解釋。