Javascript 如何在node JS应用程序中实现cron作业(使用节点调度)
这几天我开始学习NodeJS 我的Node JS应用程序有一个get api,当http://localhost:portnumber/mybooks url被激发 图书模式有四个字段,即标题、作者、类别和价格。 现在,我想介绍一个cron作业,它将在每小时的第10分钟和第50分钟运行一次。它将检查是否有价格超过100的书(这里货币不重要),它将从数据库中删除该记录(或文档)。意味着它将在上午7:10、7:50运行,然后在下一个小时的上午8:10和8:50运行,依此类推 我正在使用应用程序文件夹中的命令./bin/www启动应用程序。但是,我不知道如何实现这个cron作业服务,以及将代码放在何处(在哪个文件中),以便在启动应用程序时在上面指定的时间运行 我在这里包含了我迄今为止开发的应用程序的一些代码,让您看看。目前,它在GetRESTAPI中运行良好 这是app.js:Javascript 如何在node JS应用程序中实现cron作业(使用节点调度),javascript,node.js,mongodb,cron,Javascript,Node.js,Mongodb,Cron,这几天我开始学习NodeJS 我的Node JS应用程序有一个get api,当http://localhost:portnumber/mybooks url被激发 图书模式有四个字段,即标题、作者、类别和价格。 现在,我想介绍一个cron作业,它将在每小时的第10分钟和第50分钟运行一次。它将检查是否有价格超过100的书(这里货币不重要),它将从数据库中删除该记录(或文档)。意味着它将在上午7:10、7:50运行,然后在下一个小时的上午8:10和8:50运行,依此类推 我正在使用应用程序文件夹
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以满足我的需求吗?我可以想出如何实现它。我是从你那里得到这个主意的 虽然这不是一个精确的解,但很接近。在这种情况下,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);
}
}
});
如果有人能按照准确的要求完成这项工作,那将很有帮助。谢谢。嘿,伙计,如果你得到了这个问题的答案,你能更新你的答案吗?因为我正在寻找与您关于向调度器发出api请求的问题相同的东西。“我不能得到同样的解决方案。”Aanandham请按照我给出的链接和答案