使用Firebase进行服务器端计算

给定开始时间/date和持续时间,如何进行服务器端计算,以确定对象是"finished""in progress"还是"upcoming"

 --Show --duration: "144" --startDate: "2015-11-10" --startTime: "14:00" --status: "?" 

客户端JavaScript来确定展示是否已经开始了:

 // if negative, then show hasn't started yet var time = (-(startdate.getTime() - currentdate.getTime()) / 1000 / 60); 

客户端JavaScript来确定展示是否已经完成了运行:

 // if negative, then show has finished var timeLeft = channelDuration - timerStartTime; 

在Firebase上无法运行您自己的服务器端代码。 看到:

  • 常见的Firebase应用程序体系结构
  • Firebase托pipe自己的服务器node.js
  • 我如何在Firebase中运行服务器端代码?
  • 如何在使用Firebase时编写自定义代码(逻辑)

但是,你可以存储一个服务器端的时间戳,这似乎是你想要做的:

 ref.child('Show/startTimestamp').set(Firebase.ServerValue.TIMESTAMP); 

然后,您可以获取尚未开始的演出:

 var shows = ref.child('Shows'); ref.orderByChild('startTimeStamp').startAt(Date.now()).on(... 

对于经过的人,我想现在Firebase允许你通过Cloud Function来做到这一点。 对于这种情况,当数据添加到数据库时,可以创build用于通过其他参数确定status的函数。

请结帐

https://firebase.google.com/docs/functions/