Вот код, доступный для пользователей:
var CronJob = require('cron').CronJob;
const User = require('../models/User');
const Teams = require('../models/Teams');
const sgMail = require('@sendgrid/mail');
require('dotenv').config();
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const axios = require("axios");
// add this to packagejson to start cron job \"node helpers/cron.js\" "
var job = new CronJob('* * * * *', async function () {
var promise = await axios.request({
method: 'get',
url: 'http://localhost:5000/api/hackathons/present',
port: 80,
});
const items = promise.data;
var result_of_hackathon_names = items.map(dict => {
return dict.name;
})
console.log(result_of_hackathon_names);
console.log("he");
for (let i = 0; i < result_of_hackathon_names.length; ++i) {
let ht_name = result_of_hackathon_names[i];
console.log(ht_name);
ans = await Teams.collection.find({ 'hackathon': ht_name });
console.log("end");
}
// try {
// ans = await Teams.collection.find({ 'hackathon': ht });
// ans.forEach(doc => {
// console.log(doc.userId);
// });
// console.log("here", ans);
// } catch (err) {
// console.error(err);
// }
// var NewAns = await ans.then(function (result) {
// return result;
// })
console.log("I'm in")
try {
await sgMail.send(msg);
console.log("sent");
} catch (error) {
console.log(error);
}
console.log("Finished");
}, null, true, 'America/Los_Angeles');
job.start();
На изображении также есть консоль с приостановкой вывода после первой итерации l oop. При запуске задания cron функция asyn c останавливается при самом первом вызове базы данных. "Await" вызывает ошибку sh, но если я не добавляю await, я получаю отложенное обещание.