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

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

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

import mongoose from 'mongoose';
import dotenv from 'dotenv';
dotenv.config();

mongoose.set('strictQuery', false);

export const MongoDBConnection = async () => {
    try {
        const connection = await mongoose.connect('mymongourl');
        console.log('Connected to database');
        return connection.connection.getClient();
    } catch (err) {
        console.log('Error connecting to database: ' + err);
    }
};

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

import { MongoDBConnection } from '../database/db.js';
const client = await MongoDBConnection();
const agenda = new Agenda({ mongo: client.db('AgendaJobs') });

agenda.on('ready', () => {
    console.log('Schedule the task')
    agenda.start();
});

krcsximq

krcsximq1#

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

相关问题