#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
Он не дает никакого идентификатора, но вы можете проверить идентификатор процесса и сохранить его в любом месте.
Вы можете ознакомиться с документацией здесь.