NodeJS定期任务

总之,我会解释我的问题:

我正在开发一个电子商务网站。 其中一个特点是客户可以创build采购规则 。 通过这些规则,客户可以设置开始date,周期和产品购买。 结果是产品将在[开始date]的[周期]天内购买。

该系统以NodeJS作为后端,MongoDB作为数据库,AngularJS作为前端开发。

我发现了一些在NodeJS中调度任务的项目。 其中两个是:

  • 节点时间表
  • 节点的cron

他们两个都是很棒的工具,但是我和他们两个有同样的问题。 问题是我需要创build计划任务以及停止它们。 使用这些工具很清楚如何安排一段时间执行的function,但是我怎样才能随时阻止它们呢?

node-schedule和node-cron提供的对象有一个cancel()或stop()方法来停止调度,但为了调用这个方法我需要有这个对象。

我的问题是,如果有一种方法可以将计划任务“存储”在数据库中,以便能够在任何时候,从创buildfunction以外的任何地方阻止它们。

如果这是不可能的,如果有另一种工具比我所提到的做得更好,

非常感谢您的阅读和任何帮助,将不胜感激。

好吧,我find了一个更好的解决scheme,我的问题比添加一堆计划的任务,一个购买规则。 现在我的purchase_rules表如下所示:

+--------------------+ | purchase_rules | +--------------------+ | customer_id | | product_id | | quantity | | start_date | | periodicity (Days) | +--------------------+ 

我的解决scheme是添加字段下一次运行,所以我的表格将如下所示:

 +--------------------+ | purchase_rules | +--------------------+ | customer_id | | product_id | | quantity | | start_date | | periodicity (Days) | | next_run | +--------------------+ 

默认情况下[next_run]将是[start_date] + [periodictiy]。

而现在,魔法:

我将使用节点时间表每天安排一个工作在某个小时。 这项工作将做到以下几点:

  1. 在purchase_rules表中查找其next_run = today的任何规则
  2. 对于find的每个规则:
    1. 为客户购买所需的[数量]产品[product_id] [customer_id]
    2. 使[next_run] = [next_run] + [周期性]

通过这种方式,数据库将不会像Agenda程序包那样被多次使用,并且为了“停止”purchase_rule,我只需要将其从数据库中删除。

我希望有一天有人会觉得这有用。