【发布时间】:2018-01-14 17:04:42
【问题描述】:
虽然我在项目中使用了 Promise,但我没有得到完美的结果,有时 getSubCats 函数返回空对象,有时该函数返回 subCategories 的结果
我尝试了什么
exports.getCatsVthSubcats = function (req, res) {
var catsArray = [];
Category.find({active:true}).exec(function (err, cats) {
if (err) {
console.log("Error : " + JSON.stringify(err))
} else {
for (var i = 0; i < cats.length; i++) {
var catId = cats[i].catId;
catsArray.push(getSubCats(catId));
}
Promise.all(catsArray).then(results => {
console.log("REULT : " + JSON.stringify(results))
})
}
})
}
function getSubCats(catId) {
return SubCats.find({
catId: catId,
active: true
}).exec(function (err, subCategories) {
var obj = {
catId: catId,
subcats: subCategories
}
return obj;
})
}
我得到了什么结果
console.log(catsArray )
[
[
{
category : "vegitarian",
rank : 23
},
{
category : "Non-vegitarian",
rank : 2
}
],
[], // some times getSubCats function returning empty array
[
{
category : "appetizers",
rank : 3
},
{
category : "nonveg-appitizers",
rank : 52
}
]
]
我想要什么
console.log(catsArray )
[
{ catId : Vegitarian,
subcat :[
{
category : "vegitarian",
rank : 23
},
{
category : "Non-vegitarian",
rank : 2
}
]
},
{ catId : "Non-vegetarian",
subcats :[
{
category : "appetizers",
rank : 3
},
{
category : "nonveg-appitizers",
rank : 52
}
]
}
]
提前致谢
【问题讨论】:
标签: node.js mongodb callback promise