Firebase.ServerValue.TIMESTAMP在即时child_added上返回不同的值

时间:2016-11-05 22:01:23

标签: firebase firebase-realtime-database

我有一个带服务器时间戳的Firebase推送,其中child_added侦听器已在侦听。

非常令人惊讶的是,返回到child_added事件的值与实际存储在Firebase数据库节点中的值相差约300毫秒。在同一节点上进行后续读取,提供了正确的'存储在节点上的时间。只有初始的child_added事件才会在推送发生时触发,即返回错误的时间。

有人观察过这个问题吗?

ref = new Firebase(/some/path);
ref.on('child_added', function (childData) {
   console.log('childData.pushTime = ' + childData.pushTime);
});
ref.push({pushTime: Firebase.ServerValue.TIMESTAMP});

console.log打印的内容与实际存储在路径中的内容相差约300毫秒。

1 个答案:

答案 0 :(得分:2)

您看到的行为是预期的行为。

这是因为child_added事件是在本地触发的,使用ServerValue.TIMESTAMP的值,该值是使用本地时间和本地时钟与服务器时钟的偏移量确定的。但是,无法考虑请求到达服务器所需的时间 - 因此时间戳不同。

如果您还收听child_changed事件,则会在写入完成后使用包含正确时间的快照触发。