MEAN应用程序使用API​​调用

时间:2017-10-02 11:28:17

标签: javascript node.js cron node-cron

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

app.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调用?

1 个答案:

答案 0 :(得分: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();