Метод res.send()
возвращает (пусто) до того, как данные извлекаются из базы данных (Mongodb) из метода
Skills.find({ skillbranch: branches[i]._id }, function (err, skills) {
Как мы можем добавить await или async к этому перед возвращением?
Я изучаю узел / экспресс и не смог составить синтаксис для использования с некоторыми ответами / примерами в других публикациях в stackoverflow, где они использовали async
, await
, Promise
.
const Skills = require('../models/skills.model.js');
const SkillBranch = require('../models/skillbranch.model.js');
exports.getSkills = function (req, res) {
let branchSkills = [];
SkillBranch.find(function (err, branches) {
if (branches) {
var obj = {
"status": "200",
"message": "skills",
"data": branches
}
for (var i = 0; i < branches.length; i++) {
Skills.find({ skillbranch: branches[i]._id }, function (err, skills) {
console.log(JSON.stringify(skills)); //this is returning after res.send()
branchSkills.push(skills);
})
if (i == branches.length - 1) {
var obj = {
"status": "200",
"message": "skills",
"data": branchSkills
}
//this is returning before Skills.find() is complete
res.send(JSON.stringify(obj));
}
}
} else {
var obj = {
"status": "500",
"message": "Getting skills ",
"data": []
}
res.send(JSON.stringify(obj));
}
})
};