我有一个带有服务器时间戳的 Firebase Push,其中 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 毫秒。
最佳答案
您看到的行为是预期的行为。
发生这种情况是因为 child_added
事件是在本地触发的,使用的 ServerValue.TIMESTAMP
值是通过本地时间和本地时钟与服务器的偏移确定的钟。但是,无法计算请求到达服务器所需的时间 - 因此时间戳不同。
如果您还监听 child_changed
事件,一旦写入完成,它将触发一个包含正确时间的快照。
关于Firebase.ServerValue.TIMESTAMP 在直接 child_added 上返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40443662/