У меня есть несколько модулей и моделей, которые разделены.Теперь я хочу добавить agenda
для запуска заданий в режиме планирования.когда я кодирую в sync
все работает нормально, но я хочу обработать это с async
и await
.вот мой код:
import {User} из 'models';
module.exports = async function (agenda) {
agenda.define('userjob', async (job) => {
console.log(`running job for user: ${job.attrs.data.userId}`);
const user = await User.findOne({ _id: job.attrs.data.userId });
console.log(user);
});
};
и в моем anenda
индексном файле:
import Agenda from 'agenda';
const agenda = new Agenda({ db: { address: mongo } });
agenda.on('success', (job) => {
console.log(`job ${job.attrs.name} was successfull.`);
});
и внекоторые из моих маршрутов (только для теста) я называю так:
agenda.now('userjob', { name: 'name job', userId: '5bf993f11ad57c4dd9edcd74' });
проблема здесь в том, что мой user
объект, когда я регистрирую его
const agenda = new Agenda({ db: { address: mongo } });
agenda.on('ready', () => {
console.log('agenda is ready.');
});
agenda.on('start', async (job) => {
console.log(`job ${job.attrs.name} is started.`);
});
agenda.on('complete', (job) => {
console.log(`job ${job.attrs.name} is finished.`);
});
agenda.on('success', (job) => {
console.log(`job ${job.attrs.name} was successfull.`);
});
agenda.on('error', (job) => {
console.log(`job ${job.attrs.name} was failed.`);
});
jobTypes.forEach((type) => {
require(`./jobs/${type}`)(agenda);
});
(async function () {
if (jobTypes.length) {
await agenda.start();
}
}());
async function graceful() {
await agenda.stop();
process.exit(0);
}
process.on('SIGTERM', graceful);
process.on('SIGINT', graceful);
module.exports = agenda;
, вывод находится внеправильный порядок, я думаю:
job saveInvestore is started.
running job for user: 5bf993f11ad57c4dd9edcd74
job saveInvestore was successfull.
job saveInvestore is finished.
{ investmentInfo:
{ fundCode: [],
FirstName: 'test',
LastName: 'testian',
Email: 'test@test.test',
Mobile: '0912121212',
MelliNumber: '1234554321' },
role: 'BASIC',
status: 'ACTIVE',
meta: '{}',
fundCode: [],
_id:
ObjectID {
_bsontype: 'ObjectID',
id: <Buffer 5b f9 93 f1 1a d5 7c 4d d9 ed cd 74> },
firstName: 'test',
lastName: 'testian',
email: 'test@test.test',
nationalCode: '1234554321',
phoneNumber: '0912121212',
gender: 'MALE',
createdAt: 2018-11-24T18:09:53.912Z,
updatedAt: 2018-11-24T18:09:53.912Z,
__v: 0 }
Как мне составить повестку дня, чтобы она работала точно в том порядке, в котором ожидалась async/await
работа?