【发布时间】:2019-10-09 11:05:41
【问题描述】:
方法res.send()在从方法中从数据库(Mongodb)获取数据之前返回(空)
Skills.find({ skillbranch: branches[i]._id }, function (err, skills) {
我们如何在返回之前添加等待或异步?
我正在学习 node/express,但无法在 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));
}
})
};
【问题讨论】:
标签: node.js express async-await