安排路线或控制器

schedule route or controller

我有一个控制器

exports.updateDaily = async (req, res) => {
  try {
    const updateDaily = await transaction.decrement(
      {
        remainActive: 1,
      },
      {
        where: {
          remainActive: { [Op.gte]: 1 },
        },
      }
    );
    console.log(updateDaily);
    res.status(200).send({
      status: "Success",
    });
  } catch (error) {
    console.log(error);
    res.status(400).send({
      status: "Failed",
    });
  }
};

和这样的路线

router.patch('/updateDaily', updateDaily)

Using cron-node

let job = new cron.schedule('2 * * * *', () => {
    router.patch('/updateDaily', updateDaily);
});
job.start()

Using setIntverval

const scheduller = () => {
     return router.patch('/updateDaily', updateDaily);
}
setInterval(scheduller,600000)

如何每 10 分钟制作一个 运行?我已经用 node-cron 或 setInterval 尝试过了,但没有任何反应

你理解错了。有一个预定的工作意味着 运行 周期性地做一些事情,这必须是一个做某事的功能。您不需要在其中定义路由器。您的代码只做一件事——安排路由器在预定时间到来后可供用户使用,并每 10 分钟重新定义一次。

您需要为该操作创建一个单独的函数并在预定的时间调用它,此时拥有一个路由器是额外的,除非您想要 运行 它在用户发送请求时作为嗯

const myDailyTask = async () => {
  await transaction.decrement(
    {
      remainActive: 1,
    },
    {
      where: {
        remainActive: { [Op.gte]: 1 },
      },
    }
  );
};

const id = setInterval(myDailyTask, 600_000);

它应该以同样的方式用于 cron 作业

const job = new cron.schedule('2 * * * *', () => {
    myDailyTask();
});
job.start();