Firebase 基于时间更新数据库中的条目

Firebase 基于时间更新数据库中的条目,firebase,cron,firebase-realtime-database,Firebase,Cron,Firebase Realtime Database,我有一个叫“票”的模型,有开始时间和结束时间。我希望能够在前端按时间对票进行排序/划分。将有3个类别:过去(现在>结束时间)、当前(开始时间

我有一个叫“票”的模型,有开始时间和结束时间。我希望能够在前端按时间对票进行排序/划分。将有3个类别:过去(现在>结束时间)、当前(开始时间<现在<结束时间)、未来(现在<开始时间)。其中现在表示实际UTC时间。我想在票证模型中有一个“state”字段,它将包含值“pass”、“current”或“future”。我需要一种基于时间更新票证状态的方法

每分钟运行一次cron作业是否是一个合适的解决方案?它将遍历所有条目并检查状态是否应该更新,然后在必要时执行更新。此解决方案可扩展吗?有更好的解决办法吗


如果有必要,我正在考虑使用Firebase作为数据库,使用Google App Engine作为cron作业。

在大多数情况下,将数据保存到数据库是错误的方法,该数据库会随着时间的推移而失效,但可以从同一记录的数据计算出来。如果更新了日期,但cronjob尚未运行,或者日期接近现在,则也存在不一致的风险

我建议您始终使用日期字段在db查询中计算该信息。在MySQL中,其工作原理与此类似:

SELECT 
    (IF (end_time < NOW()) THEN 'past' ELSE IF (start_time < NOW()) THEN 'current' ELSE 'future') AS state
FROM table
选择
(如果(结束时间<现在())则为“过去”,如果(开始时间<现在())则为“当前”或“未来”)作为状态
从桌子上
或者,您可以只获取
start\u time
end\u time
字段,并处理应用程序中的状态。如果要按状态查询条目,还可以使用筛选子句中的日期列


这就不需要使用cron作业来更新状态。

这将很难回答,因为它本身并不是一个真正的编码问题,而且非常模糊,因为它完全取决于您的票证状态的用例。i、 e.如果当前时间大于票务时间,会发生什么情况?更新您的问题,提供更多特定于编码的详细信息,以便我们提供帮助。也请审查以及