#node.js #cron #node-schedule
Вопрос:
запланируйте динамическое выполнение ежедневных электронных писем. Поэтому он проверяет базу данных в полночь с понедельника по пятницу, чтобы узнать, кто включил свою систему электронной почты, а затем собирает их данные, чтобы запланировать свою работу на выбранное ими время.
Проблема, с которой я сталкиваюсь, заключается в том, что запланированные задания внутреннего цикла становятся повторяющимися, поэтому я получаю дополнительное электронное письмо в день, когда приложение работает более 24 часов.
Как мне запланировать задание, чтобы выполнить его только один раз, а затем остановить/отменить.
const dailyEmails = schedule.scheduleJob("Daily Emails",'00 00 * * 1-5', function () {
con.query("SELECT * FROM login WHERE role='ADMIN' AND survey_time IS NOT NULL AND survey_system=1", (err, rows, fields) => {
if (err) {
console.log(err)
}
const jobs ={};
for (var i = 0; i < rows.length; i ) {
let companyName = rows[i].company_name;
var hr = surveyTime.split(':')[0]
var m = surveyTime.split(':')[1]
// let time = {hour: hr, minute: m}
jobs[companyName]=schedule.scheduleJob(companyName,`${m} ${hr} * * *`, function () {
db.query("SELECT DISTINCT i.name,i.type,i.email from tb_employees_info i",(err, rows, fields) => {
if (err) {
console.log(err)
}
//email contents
// // send mail with defined transport object
transporter.sendMail(msg);
}
})
})
}
})
});