将来的时间戳作为firebase的关键

时间:2014-03-12 14:50:26

标签: firebase

我需要为将来的活动创建通知。例如类似于提醒。我当时认为我可以使用服务器时间戳+未来时间作为密钥,而只弹出时间戳早于当前服务器时间的通知。但是我需要服务器时间。 我不能使用客户端时间戳,因为它可能不同步。

有没有办法从firebase获取当前时间戳?

我知道有一个占位符可以在服务器端替换时间戳。我可以用它作为钥匙吗? 我可以想象,当占位符替换为实时时间戳时,有没有办法听取此事件?

或者通常还有其他明智的解决这个问题的方法吗?

1 个答案:

答案 0 :(得分:1)

你可能在这里解决the X/Y problem,你最好解释一下你的用例并获得更好的整体解决方案;获取服务器时间戳以在客户端上使用似乎极有可能是一个概念性问题。

例如,如果我的目标只是在消息中显示时间,我可以简单地调用set,监视路径并显示它返回的内容:

var ref = new Firebase(URL);
ref.on('child_added', function(snap) {
   // client just listens on path, records have serve timestamp when they arrive
   console.log('the last event was added at', snap.val().time);
});
ref.push({ name: 'Kato', time: Firebase.ServerValue.TIMESTAMP });

如果您要排队将来的活动,只需将它们存储在不同的路径中,然后将它们移动到" present"准备好的路径。而不是试图获取"现在"并在以后插入。

如果您设置了获取时间戳,最简单的方法是设置虚拟路径并根据它设置值:

new Firebase(URL).transaction(function(currValue) {
   return Firebase.ServerValue.TIMESTAMP;
}, function(err, success, snap) {
   console.log('the current server timestamp', snap.val());
});