1

我正在寻找一种方法来每天通过 cron 作业检查我们用户的订阅。我想为此使用 node-cron 。我不确定我应该把代码放在哪里来启动 cronjob。目前,我的设置如下:

应用程序.js:

app.listen(config.port, function() {

            // Logging initialization
            console.log('--');
            console.log(chalk.green(config.app.title));
            console.log(chalk.green('Environment:\t\t\t' + process.env.NODE_ENV));
            console.log(chalk.green('Port:\t\t\t\t' + config.port));
            console.log(chalk.green('Database:\t\t\t\t' + config.db.uri));
            if (process.env.NODE_ENV === 'secure') {
                console.log(chalk.green('HTTPs:\t\t\t\ton'));
            }
            console.log('--');

            if (callback) callback(app, db, config);

            var job1 = new cron.CronJob({
                cronTime: '* * * * *',
                onTick: function(){
                    app.get('/api/users/checkSubscriptions/').success(function() {
                        console.log( 'working!')
                    }).error(function() {
                        console.log( 'error!')
                    });
                },
                start: false,
                timeZone: 'Europe/Paris'});
            job1.start();
        });

users.server.routes.js

'use strict';

module.exports = function(app) {

    app.route('/api/users/checkSubscriptions/')
      .get(subscriptionCheck.checkSubscriptions);
};

cronjob-subscription.server.controller

var mongoose = require('mongoose'),
User = mongoose.model('User');
exports.checkSubscriptions = function() {
  User.findAll(function(err, users) {
    if(err) {
      console.log(err);
    } else {
      for(var i = 0;i< users.length; i++) {
        var user = users[i];
        console.log(user);
      }
    }
  });
}

目前我只想将用户打印到控制台以检查这是否有效。使用 app.js 中的当前代码,我收到以下错误:

app.get('/api/users/checkSubscriptions/').success(function() {
                            ^

    TypeError: app.get is not a function

您能否建议我在初始化应用程序时如何在 cronjob 中进行 API 调用?

4

1 回答 1

0

我设法通过在我的 server.js 文件而不是 app.js 文件中添加代码来使其工作。在 server.js 我现在有以下(相关)代码:

var app = require('./config/lib/app'),
cron = require('cron');

var server = app.start(function(req, res) {
var job1 = new cron.CronJob({
    cronTime: '00 30 07 * * 1-7',
    onTick: function() {
      //function execution
    },
    start: false,
    timeZone: 'Europe/Paris'
});
job1.start();
于 2017-10-05T13:12:45.077 回答