javascript 为什么Agenda在我的代码中不起作用?不保留工作

r3i60tvu  于 2023-08-02  发布在  Java
关注(0)|答案(1)|浏览(98)

我正在尝试使用议程包来调度我的Nodejs项目中的一些任务,但我面临一些与议程包相关的超时问题,所以我的问题是如何在我的项目中设置连接属性?使用mongoose包建立MongoDB Atlas连接如何使用MongoDB的现有连接与我的议程?
在我当前的代码中,当我执行一些任务时,它不会在我的Atlas中显示任何内容,但我只能看到AgendaJobs集合,但在我在Nodejs项目中调度一些任务后,我看不到它里面的任何内容。
我该如何正确地做事?
db.js:

  1. import mongoose from 'mongoose';
  2. import dotenv from 'dotenv';
  3. dotenv.config();
  4. mongoose.set('strictQuery', false);
  5. export const MongoDBConnection = async () => {
  6. try {
  7. const connection = await mongoose.connect('mymongourl');
  8. console.log('Connected to database');
  9. return connection.connection.getClient();
  10. } catch (err) {
  11. console.log('Error connecting to database: ' + err);
  12. }
  13. };

字符串
我只是在index.js文件中调用这个函数,就像下面的MongoDBConnection()
议程连接:

  1. import { MongoDBConnection } from '../database/db.js';
  2. const client = await MongoDBConnection();
  3. const agenda = new Agenda({ mongo: client.db('AgendaJobs') });
  4. agenda.on('ready', () => {
  5. console.log('Schedule the task')
  6. agenda.start();
  7. });

krcsximq

krcsximq1#

根据我对这里显示的代码的回答-你错过了很多。根据文件
在使用作业之前,必须定义其处理行为。
议程包的核心概念是有一个议程示例,它对定义的作业进行排队、调度和执行,这些作业被记录到agendaJobs集合中。您有示例,但没有已定义的作业。当您调用await agenda.start()时,没有任何定义附加到此示例,这意味着示例和作业之间存在断开连接。您需要首先为特定作业创建定义,然后决定如何创建这些作业。
以下是一些帮助我开始的文章:

相关问题