在推送数据之前获取 Firebase 时间戳
Getting Firebase timestamp before pushing data
我有一个由 Firebase 提供支持的聊天应用程序,我想在推送任何数据之前从 Firebase 获取时间戳。
具体来说,我想获取用户按下语音消息发送按钮的时间。在上传成功之前,我实际上并没有将消息推送到 Firebase(这样当收件人收到消息时,音频文件就可以保证存在)。如果我只是简单地使用 Firebase.ServerValue.TIMESTAMP,则可能会由于不同的上传持续时间而出现排序问题。 (例如,一条很长的消息之后的一条很短的消息。)
是否可以通过 ping Firebase 获取我在文档中没有看到的时间戳?谢谢!
如果要将点击与数据的实际写入分开:
var newItemRef = ref.push();
uploadAudioAndThen(audioFile, function(downloadURL) {
newItemRef.set({
url: downloadURL,
savedTimestamp: Firebase.ServerValue.TIMESTAMP
});
});
这有几件事:
它在上传之前为项目项目创建一个引用。此引用将有一个基于上传开始时间 的推送 ID。此时没有任何内容写入数据库,但新位置的密钥已确定。
然后上传并"waits for it"完成。
在上传的完成处理程序中,它写入它在步骤 1 中确定的新位置。
写入此时的服务器时间戳,即上传完成时
所以你现在有两个时间戳。一个是上传开始时,编码到新项目的 key/push id 中,另一个是上传完成时,在 savedTimestamp
属性.
中
获取已完成的 3 个最近开始的上传:
ref.orderByKey().limitToLast(3).on(...
获取最近完成的 3 个上传:
ref.orderByChild('savedTimestamp').limitToLast(3).on(...
我有一个由 Firebase 提供支持的聊天应用程序,我想在推送任何数据之前从 Firebase 获取时间戳。
具体来说,我想获取用户按下语音消息发送按钮的时间。在上传成功之前,我实际上并没有将消息推送到 Firebase(这样当收件人收到消息时,音频文件就可以保证存在)。如果我只是简单地使用 Firebase.ServerValue.TIMESTAMP,则可能会由于不同的上传持续时间而出现排序问题。 (例如,一条很长的消息之后的一条很短的消息。)
是否可以通过 ping Firebase 获取我在文档中没有看到的时间戳?谢谢!
如果要将点击与数据的实际写入分开:
var newItemRef = ref.push();
uploadAudioAndThen(audioFile, function(downloadURL) {
newItemRef.set({
url: downloadURL,
savedTimestamp: Firebase.ServerValue.TIMESTAMP
});
});
这有几件事:
它在上传之前为项目项目创建一个引用。此引用将有一个基于上传开始时间 的推送 ID。此时没有任何内容写入数据库,但新位置的密钥已确定。
然后上传并"waits for it"完成。
在上传的完成处理程序中,它写入它在步骤 1 中确定的新位置。
写入此时的服务器时间戳,即上传完成时
所以你现在有两个时间戳。一个是上传开始时,编码到新项目的 key/push id 中,另一个是上传完成时,在 savedTimestamp
属性.
获取已完成的 3 个最近开始的上传:
ref.orderByKey().limitToLast(3).on(...
获取最近完成的 3 个上传:
ref.orderByChild('savedTimestamp').limitToLast(3).on(...