gpt4 book ai didi

angularjs - NodeJS 周期性任务

转载 作者:太空宇宙 更新时间:2023-11-03 22:13:42 25 4
gpt4 key购买 nike

首先,我会解释我的问题:

我正在开发一个电子商务网站。它的功能之一是客户可以创建购买规则。通过这些规则,客户可以设置开始日期、周期和要购买的产品。结果是,从[开始日期]开始,每隔[周期]天就会购买该产品。

系统采用NodeJS作为后端、MongoDB作为数据库、AngularJS作为前端开发。

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

它们都是很棒的工具,但我对它们有同样的问题。问题是我需要创建计划任务并停止它们。有了这些工具,如何安排一个函数随着时间的推移执行就很清楚了,但是我怎样才能随时停止它们呢?

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

我的问题是是否有一种方法可以将计划任务“存储”在数据库中,以便能够随时从创建它们的函数之外的任何地方停止它们。

如果这是不可能的,是否有比我提到的工具更好的工具来完成我需要的事情。

非常感谢您的阅读,如有任何帮助,我们将不胜感激。

最佳答案

好吧,我找到了一个比添加一堆计划任务(一个用于购买规则)更好的解决方案来解决我的问题。现在我的purchasing_rules表看起来像这样:

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

我的解决方案是在下次运行时添加该字段,因此我的表格将如下所示:

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

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

现在,魔法:

我将使用node-schedule每天在特定时间安排工作。该作业将执行以下操作:

  1. 在purchase_rules 表中查找next_run = 今天的任何规则
  2. 对于找到的每条规则:
    1. 为客户 [customer_id] 购买所需 [数量] 的产品 [product_id]
    2. 使 [next_run] = [next_run] + [周期]
  3. 完成

这样,数据库将不会像议程包那样被访问多次,并且为了“停止”购买规则,我只需将其从数据库中删除即可。

我希望有一天有人会发现这很有用。

关于angularjs - NodeJS 周期性任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35047011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com