задача планирования в nodejs периодически отправлять электронные письма пользователю

#javascript #node.js #scheduled-tasks #job-scheduling #node-cron

Вопрос:

Я пытаюсь периодически отправлять электронное письмо пользователю(ежедневно, еженедельно, ежемесячно) в зависимости от его предпочтений с помощью моего приложения nodejs node-cron . Здесь пользователь может редактировать/изменять свои предпочтения по почте(еженедельно, ежедневно и т. Д.). поэтому, когда они это делают, выражение cron обновляется в соответствии с их предпочтениями из бэкэнда.

Однако предыдущее предпочтение все еще срабатывает, я считаю, что мы должны уничтожить предыдущую работу. как это сделать?

Является ли это правильным подходом к моей проблеме? или мне нужно сохранить их предпочтения в базе данных и запускать письма вручную в зависимости от даты?

Комментарии:

1. Вы прекращаете предыдущее задание cron ? Эти задания специально заданы для предпочтений пользователя (администратора) или заданы глобально для всех?

2. 1. Нет, не останавливая предыдущую работу. есть ли какой-нибудь способ остановить задание с идентификатором, чтобы я мог сохранить его в БД, а когда появятся новые предпочтения, я смогу удалить старые? 2. задания задаются только в соответствии с предпочтениями пользователя.

Ответ №1:

Вот как вы должны это делать с node-cron :

 const cron = require('node-cron');

const task = cron.schedule('* * * * *', () =>  {
  console.log('stopped task');
}, {
  scheduled: true
});

task.start();
task.stop();
task.getStatus(); // get you the status, so for every user check it and then restart it.
task.destroy();  // it will kill the job 
 

Он не дает никакого идентификатора, но вы можете проверить идентификатор процесса и сохранить его в любом месте.

Вы можете ознакомиться с документацией здесь.