在Firebase中只按日期收听最后一个孩子

Only listent to last children by date in Firebase

本文关键字:最后一个 孩子 日期 Firebase      更新时间:2023-09-26

在我的应用程序中,我使用以下代码只侦听当前时间之后添加的子节点:

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

在浏览器中,此方法运行良好。只有当我在当前时间之后开始添加时,我才会看到子节点。

在智能手机中,这种方法不起作用。只有当我在一定的秒数后开始添加子节点时,它才会起作用。我认为发生这种情况是因为智能手机的当前时间与服务器的当前时间不同。

有没有办法解决这个问题,而不必采取最后一个元素?

如果你手机上的时钟关闭,这将不可靠地工作。

Firebase检测本地时钟与服务器时间的偏移量,并将其公开为值.info/serverTimeOffset。您可以使用它来纠正时钟倾斜,如时钟倾斜文档中所述:

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

阅读链接文档以获得完整的解释