转到数据库的 cronjob node.js

cronjob to go to database node.js

我有这个:

cronJob = require('cron').CronJob;

var getTexts = new cronJob( '13 12 * * *', function(){
    var viewConformationEmails = "select * from clients";
    ibmdb.open(ibmdbconn, function(err, conn) {
        if (err) return console.log(err);
        conn.query(viewConformationEmails, function(err, rows) {
            if (err) {
                console.log(err);
            } else if (!err) {
                console.log("Success")
            }
    
            var arrayOfNumbers = []
            for (var i = 0; i < rows.length; i++) {
                arrayOfNumbers.push(rows[i].PHONE_NUMBER)
            }
            console.log("arrayOfNumbers: ", arrayOfNumbers)
    
            conn.close(function() {
            });
        });
    });
})

我在这里做的是为今天 12:13 pm 设置一个 cronjob,这已经过去了。在那个 cronjob 函数中,我转到我的数据库并获取 phone 数字,将它们放入一个数组中,然后尝试记录该数组。

但是,在 12:13 pm,它没有通过。我也用 twillo 试过了,它通过了。但我无法弄清楚我做错了什么,或者我是否可以做我正在寻找的事情。这可能吗

根据crondocumentation,范围参数为:

Seconds: 0-59
Minutes: 0-59
Hours: 0-23
Day of Month: 1-31
Months: 0-11 (Jan-Dec)
Day of Week: 0-6 (Sun-Sat)

因此,如果您想 运行 将任务安排在 12:13pm,您需要按以下方式设置参数:

const CronJob = require('cron').CronJob;

console.log('Before job instantiation');
const job = new CronJob('* 13 12 * * *', function() {
    const now = new Date();
    console.log('Task runs at', now);
});
console.log('After job instantiation');
job.start();

注意:设置这次没有指定Seconds参数,会运行任务在12:13pm~[=之间的每一秒27=] 内部。所以,如果你想在特定时间 运行 你的任务一次,定义 Seconds 参数:

const job = new CronJob('0 13 12 * * *', function() {
  // rest of the codes ...
}