我有一个带服务器时间戳的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毫秒。
答案 0 :(得分:2)
您看到的行为是预期的行为。
这是因为child_added
事件是在本地触发的,使用ServerValue.TIMESTAMP
的值,该值是使用本地时间和本地时钟与服务器时钟的偏移量确定的。但是,无法考虑请求到达服务器所需的时间 - 因此时间戳不同。
如果您还收听child_changed
事件,则会在写入完成后使用包含正确时间的快照触发。