如何在Node JS应用程序中实现一个cron作业(使用node-schedule)

我已经开始学习Node JS几天了。

我的节点JS应用程序有一个get api,当http:// localhost:portnumber / mybooks url被触发时,它以json格式从MongoDB数据库获取图书信息。

书籍模式有标题,作者,类别和价格四个字段。 现在,我想介绍一个每小时10分钟和50分钟的cron作业。 它会检查是否有任何书价格超过100(货币无关紧要),它会从数据库中删除该logging(或文件)。 意味着它将运行在上午7:10,上午7:50,然后在下午8:10和上午8:50等。

我正在从应用程序文件夹的命令./bin/www开始我的应用程序。 但是,我无法弄清楚如何实现这个cron作业服务,以及在哪里(在哪个文件中)放置这个代码,以便在我开始我的应用程序时在上述指定时间运行。

我在这里包括了我的开发应用程序的代码,让你看看。 目前它正在为得到restapi工作正常。

这是app.js:

var express = require('express'); var path = require('path'); var bodyParser = require('body-parser'); var index = require('./routes/index'); var app = express(); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', index); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handler app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); module.exports = app; 

这是index.js:

 var express = require('express'); var router = express.Router(); var mongoose = require('mongoose'); var Book1 = require('../models/mybook.model'); var db = 'mongodb://localhost/mybookdb'; var mongoose = require('mongoose'); mongoose.connect(db); var conn = mongoose.connection; /* GET home page. */ router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); router.get('/mybooks', function(req, res) { console.log('Showing all books'); Book1.find({}) .exec(function(err,records){ if(err){ res.send('error has occured'); }else{ console.log(records); res.json(records); } }); }); module.exports = router; 

和mybook.model一样:

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var BookSchema = new Schema({ title:String, author:String, category:String, price: Number }); module.exports = mongoose.model('Book', BookSchema); 

任何人都可以帮助我如何以及在哪个文件中实现节点计划cron服务我的要求?

我可以弄清楚如何做到这一点。 我从https://www.npmjs.com/package/node-schedule得到了这个想法。

虽然这不是一个确切的解决scheme,但接近。 在这种情况下,cron作业每时每刻都在持续运行,但是删除操作并未实现。 cron调度程序代码可以放在index.js中,如下所示:

 var s = require('node-schedule'); var j = schedule.scheduleJob('* * * * *', function() { Book1.find({price : {$gt:100}} , function(err, result) { if(err) { console.log(err); } else { if(!result) { console.log("No book found"); } else { console.log("Found a book with title "+result.title); } } }); 

如果有人能完成这个确切的要求将是有益的。谢谢。