我正在尝试使用节点计划。我想创建一个动态调度程序。我想动态设置时间表规则。根据github上的文档调用它时,它的工作正常。但是,当我将其带入函数循环时,则无法正常工作。我的代码如下。为了安全起见,代码中的smtp电子邮件地址已被修改。
con.connect(function (err) {
if (err) throw err;
con.query("SELECT * FROM customers", function (err, result, fields) {
if (err) throw err;
for (var i = 0, len = result.length; i < len; i++) {
var dt = dateTime.create(result[i].expire_date);
var formattedDate = dt.format('Y-m-d');
if (result[i].payment_status === 0) {
var dt_str = formattedDate.split('-');
var dt_year = parseInt(dt_str[0]);
var dt_month = parseInt(dt_str[1]);
var dt_date = parseInt(dt_str[2]);
var mail_to = result[i].email, mail_sub='Schedule Of Maintenance', mail_message='Test Mail message Status';
console.log('ScheduleCron Function calling');
scheduleCron(dt_date,dt_month, dt_year, mail_to, mail_sub, mail_message);
} else {
console.log(result[i].payment_status);
}
}
});
});
function scheduleCron(schedule_date,schedule_month,schedule_year,mail_to,mail_sub,mail_message) {
console.log(schedule_date+' '+schedule_month+' '+schedule_year);
console.log('ScheduleCron Function In');
var date = new Date(schedule_year, schedule_month, schedule_date, 13, 33, 0);
schedule.scheduleJob(date, function(){
sendEmail( mail_to, mail_sub, mail_message);
});
}
function sendEmail(mail_to,mail_sub,mail_message) {
var mailOptions = {
from: "email@gmail.com",
to: mail_to,
subject: mail_sub,
text: mail_message
};
transporter.sendMail(mailOptions, function (error, info) {
if (error) {
throw error;
} else {
console.log("Email successfully sent!");
}
});
}
答案 0 :(得分:0)
您需要创建一个工作对象,如文档https://www.npmjs.com/package/node-schedule
中所示let initialText = rx.sentMessage(#selector(MyViewController.viewDidLoad)).map { _ in "" }
let name = Observable.merge(initialText, nameChangedProperty.asObservable())
答案 1 :(得分:0)
您缺少调度算法所需的Job对象。 从文档中
工作和计划
节点调度中的每个调度作业都由一个Job对象表示。您可以手动创建作业,然后执行schedule()方法应用时间表,或使用方便的函数scheduleJob(),如下所示。
答案 2 :(得分:0)
我也被这个弄糊涂了。我不明白为什么这不起作用,我的意思是“myFunc()”是一个函数。对?所以你把 myFunc() 放到 scheduleJob() 的第二个参数中:
function myFunc(){
console.log("stuff");
do.otherStuff();
}
schedule.scheduleJob('*/10 * * * *', myFunc());
但出于某种奇怪的原因,它必须这样调用:
function myFunc(){
console.log("stuff");
do.otherStuff();
}
schedule.scheduleJob('*/10 * * * *', function(){
myFunc();
});
避免在执行时出现 TypeError: this.job.execute is not a function
错误。