1

我想生成用户定义的任务。基本上,他们有一些输入,例如:当他们希望 cron 运行时,带有 weekDays 的下拉列表、startDate 和时区。此任务是为项目定义的。在他们定义的项目上,他们想要创建一些报告。

我的代码现在的样子

/src/agenda.js

    const Agenda = require('agenda');
    
    const connectionOpts = {db: {address: process.env.MONGODB_URI'}};
    
    const agenda = new Agenda(connectionOpts);
    
    const jobTypes = ["create-report"];
    
    jobTypes.forEach(type => {
      require('./jobs/' + type);
    });
    
    if (jobTypes.length) {
      agenda.start(); // Returns a promise, which should be handled appropriately
    }
    
    module.exports = agenda;

/src/jobs/create-report.js

     agenda.define("create-report", (job: any, done: any) => {
          console.log('hello');
        })

/src/controllers/project.controller

// ProjectController, after project update process data
await agenda.schedule('in 10 seconds', 'create-report', {to: 'xyz@example.com', project: project});

我看到该作业是在数据库中创建的,但它没有运行该作业。我使用 LoopBack 作为框架。

4

1 回答 1

1

将您的/src/agenda.js文件移动到boot环回文件夹中,以便每次服务器启动时都会自动触发。

并像这样更改议程开始代码。

if (jobTypes.length) {
    // if there are jobs in the jobsTypes array set up
    agenda.on('ready',  () => {
      console.log('ready');
      agenda.start();
    });
  }
于 2020-07-30T07:34:00.883 回答