Node.js запланировать работу с Agenda.js - PullRequest
0 голосов
/ 27 сентября 2019

Я новичок в Agenda.js, и мне было интересно, можно ли запросить коллекцию повестки дня в MongoDB.Я перепробовал все, что мог придумать, но безуспешно.Я использую node.js ver.10.16.3 с expressver.4.16.2 и Повестка дня ver.1.0.3.

Вот соответствующий код: app.js

const agenda = new Agenda({ db: { address: db.mongoURI, collection: 'agendaJobs'} });

const AutomatedEmailService = {
sendCompletionReminder: async function(callback){ 
const projects = await Project.find({ completedOn:{$ne:null}, cmpConfirmationOn: null, 
    completedOn: { $gte: new Date((new Date().getTime() - (7 * 24 * 60 * 60 * 1000)))} 
  }).populate({
    path: 'assignedMgr',
    select: {fName:1, lName:1},
    options: { lean: true}
  });

/*loop projects send email*/

callback();
}
};

agenda.define('cmpConfirmationReminder', function(job, done) {
AutomatedEmailService.sendCompletionReminder(function(err,result) {
if(err) {
  const emailMessage = {
    from: "john@doe.com", 
    to: "mary@doe.com",
    subject: "Error ....",
    headers: {'X-Laziness-level': 1000 },
    text: "Error: unable to send Completion Confirmation Reminder. " + err
  };

  transport.sendMail(emailMessage, function (err) {
    if(err) throw err;
  });
  done(err);
} 
else {     
  console.log('Agenda job has been defined: ' + result);
  done();  
}
});
});

agenda.on("ready", async function() {
const existingJobs = await AgendaJobs.count();
**console.log(existingJobs);**

 // ** check database to see if job exists before running this line**
 // agenda.schedule('monday at 06:00', 'cmpConfirmationReminder');
 await agenda.start();
});

повестка дня Коллекция работ:

{
"_id" : ObjectId("5d8d4b9dcaf71f9d4c9f1d3e"),
"name" : "cmpConfirmationReminder",
"data" : null,
"type" : "normal",
"priority" : 0,
"nextRunAt" : ISODate("2019-09-30T13:00:00.678Z"),
"lastModifiedBy" : null
}

Я получаю 0когда я console.log (существующий Jobs), когда я знаю, что должно быть 1. Может кто-нибудь, пожалуйста, скажите мне, что мне здесь не хватает.Я должен иметь возможность запрашивать данные, верно?Заранее благодарю за помощь !!!

...