NodeJS cron作业 - Mongoose不会通过cron选项卡中调用的函数在模型上执行.find

时间:2017-12-22 15:59:48

标签: node.js cron node-cron

我遇到这种奇怪的情况,我的Cron Job成功执行了一个返回promise的函数,但是,当它试图在Model上执行.find()时,它实际上从未执行过。我在我的应用程序的其他地方使用了相同的功能,并通过API调用调用并返回没有问题。有什么我想念的吗?

这是我的cron脚本:

var CronJob = require('node-cron');
var TradeService = require('../services/TradeService');

// Setup the cron job to fire every second
CronJob.schedule('* * * * * *', function() {
  console.log('You will see this message every second');
  TradeService.executePendingTrades();

}, null, true, 'America/Los_Angeles');

以下是被调用的相关函数:

exports.executePendingTrades = () => {

  // Get all pending trades
  exports.getPendingTrades().then(results => {
    console.log('results', results); // This never fires
  })
}

exports.getPendingTrades = () => {
  return new Promise((resolve, reject) => {

    Trades.find({})
      .where('is_canceled').equals('false')
      .where('is_completed').equals('false')
      .sort('-created_at')
      .exec( (err, payload) => {
        if (err) {
          return reject(err); // This never fires
        }
        return resolve(payload); // This never fires
      })
  });
}

1 个答案:

答案 0 :(得分:0)

这是一个黑暗中的镜头,但请确保您在CRON作业中启动数据库连接。否则您将无法执行任何查询。