Javascript 如何在node JS应用程序中实现cron作业(使用节点调度)

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运行,依此类推 我正在使用应用程序文件夹

这几天我开始学习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:

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请按照我给出的链接和答案