当前位置: 首页 > 知识库问答 >
问题:

如何在数据库中存储预定的cron引用,以便将来在节点js中停止该cron?

丌官招
2023-03-14

我使用cron来安排推送通知。正在收集来自用户的消息推送数据和预定时间,以便在预定时间发送消息推送。

下面是我如何创建cron作业来安排推送通知:

const CronJob = require("cron").CronJob;
...
...
const schedulePushNotification = async (req, res) => {
  const job = new CronJob(
    new Date(req.body.scheduledTime),
    async () => {
      // my code to send push notification
      // code to store push notification data
      // Here I write a code to store push notification data to 
      // show on the dashboard like a list of notification
    },
    null,
    true,
    "America/Los_Angeles"
  );
  
  job.start();
  return res.status(200).json({
    success: true,
    message: "Notification has been scheduled successfully !",
    data: null,
  });
};

现在,要求是,如果用户想要取消预定的推送通知,他们可以单击cancel。

那么,我怎样才能摧毁正在运行的cron呢?

共有2个答案

章嘉致
2023-03-14

您可以通过在函数中添加if语句来实现这一点

您可以检查用户是否激活了通知,但首先,您必须在数据库中存储用户是否激活了通知,然后发送通知

章嘉致
2023-03-14

您可以通过在函数中添加if语句来实现这一点

您可以检查用户是否激活了通知,但首先必须在数据库中存储用户是否激活了通知,然后发送通知

const CronJob = require("cron").CronJob;
...
...
const schedulePushNotification = async (req, res) => {
  const job = new CronJob(
    new Date(req.body.scheduledTime),
    async () => {



      let userNotificationDetails = getUserNotificationDetails();
      if(userNotificationDetails.isSendNotification){
          job.start();
      } else {
          // don't send notification
      }



      // my code to send push notification
      // code to store push notification data
      // Here I write a code to store push notification data to 
      // show on the dashboard like a list of notification
    },
    null,
    true,
    "America/Los_Angeles"
  );
  
  
  return res.status(200).json({
    success: true,
    message: "Notification has been scheduled successfully !",
    data: null,
  });
};

.

编辑(替代解决方案:在启动cron之前检查是否通知):

const CronJob = require("cron").CronJob;
...
...
const schedulePushNotification = async (req, res) => {
  const job = new CronJob(
    new Date(req.body.scheduledTime),
    async () => {
      // my code to send push notification
      // code to store push notification data
      // Here I write a code to store push notification data to 
      // show on the dashboard like a list of notification
    },
    null,
    true,
    "America/Los_Angeles"
  );



  let userNotificationDetails = getUserNotificationDetails();
  if(userNotificationDetails.isSendNotification){
      job.start();
  } else {
      // don't send notification
  }
  



  return res.status(200).json({
    success: true,
    message: "Notification has been scheduled successfully !",
    data: null,
  });
};
 类似资料:
  • 本文向大家介绍如何临时存储数据以便以后在Oracle中使用?,包括了如何临时存储数据以便以后在Oracle中使用?的使用技巧和注意事项,需要的朋友参考一下 问题: 您要临时存储SQL的结果。 解 我们可以使用CREATE GLOBAL TEMPORARY TABLE语句创建一个表,该表临时存储会话的数据。此外,您可以指定是保留会话的临时表数据还是事务提交之前。我们可以进一步使用ON COMMIT

  • 问题内容: 在MySQL数据库中用PHP存储IP的最佳实践是什么?有一个名为ip2long的函数-但这仅适用于IPv4。但是IPv6呢? 我知道一个用于IPv6 IP的php函数,但是在Windows上的PHP <Version 5.3上不起作用 问题答案: 可以将点分十进制IPv4地址转换为整数,最大大小为32位。IPv6地址是128位。由于128位不适合PHP int,因此在PHP中使用它会很

  • 我试图将一个几何体对象存储到我的postgist数据库中,该数据库有一个带有几何体列的表。我从另一个带有几何列的表格中得到了几何值,我打印了我之前得到的值,结果没问题。要存储几何体值,我使用下一个函数: 但我总是得到这个错误: 组织。postgresql。util。PSQLException:无法推断用于org实例的SQL类型。波斯吉斯。指向使用带有显式类型值的setObject()指定要使用的类

  • 我创建了一个TextView,它以多行显示值 ,我希望将该值保留在SQLite数据库中。这是我使用的代码: 问题是当我保存值时,整个值被插入到一个单元格中。我希望每行的值分开,然后插入到每行的单个单元格中,尽管我使用扫描器方法插入数据,但它不起作用。那有什么办法吗?

  • 问题内容: 我有一个MySQL数据库。默认存储引擎为。 我想将其更改为。 我可以逐个表地更改它,但是我想一次更改它影响所有表。 如何更改数据库存储引擎?我尝试过,但似乎没有选择。 问题答案: 登录后,转到要更改的表,然后单击“操作”选项卡。在这里,您可以更改存储类型以及其他一些选项 在线文件

  • 您使用Express v4. x构建node.js应用程序,然后通过npm开始启动您的应用程序。我的问题是如何停止应用程序?有npm停止吗? 执行npm停止时编辑以包含错误