问题
我有一个与Ionic结合使用的firebase应用程序。我希望用户创建一个组并定义一个时间,当该组即将被自动删除时。我的第一个想法是创建一个setTimeout(),保存它并在用户更改时间时覆盖它。但正如我所读到的那样,setTimeout()在长时间使用时是一个糟糕的解决方案(因为firebase计费服务)。后来我听说过Cron,但就我所见,Cron只允许在特定时间调用函数,而不是相对于给定时间(例如从现在起1小时)。理想情况下,用户可以使用日期时间选择器定义任何给定时间。
我的想法
所以我的想法如下:
/scheduledJobs/{date}/{hour}/{groupId}
我的问题
安排自动删除群组的最佳方法是什么?我不确定我的方法是否适合,因为查询日期可能会在我的数据库中创建一个非常扁平和长的列表。此外,我的方法在某种程度上是有限的,只有整整几个小时可以作为删除时间而不是任何给定时间。此外,我需要来自用户的两个输入(日期+小时),而不是仅使用日期时间(这也为我提供了会议记录)。
答案 0 :(得分:1)
我相信你所寻找的是node schedule。基本上,它允许您运行服务器端cron作业,它能够获取date-time个对象并在那时安排作业。由于我假设您正在为此运行服务器,因此这将允许您根据用户输入在您希望的任何时间安排删除。
答案 1 :(得分:1)
TheCog的答案(依赖于运行节点服务器)的替代方法是将Cloud Functions for Firebase与第三方服务器(例如cron-jobs.org)结合使用来安排执行。有关替代触发器,请参阅this video for more或this blog post。
在这两种方法中,我建议只在数据库中保留即将推出的触发器。因此,在处理完作业后删除它们。这样你知道它不会永远增长,而是会有某种固定的大小。实际上,您可以非常有效地查询它,因为您知道您只需要读取在下一个触发时间之前安排的作业。
如果您在实施方法时遇到问题,我建议您共享minimum code that reproduces where you're stuck,因为这样会更容易提供具体的帮助。