或者很可能我做错了,事实上,我做错了很可能。
有一张包含"树的表格"技巧,从根级别开始,可能深达十个级别(目前只有两个级别),但我想将其作为一个大胖子JSON结构返回,所以我想向数据库询问每组数据,构建我的结构然后要求下一个级别。
当然,如果我只是使用mongoose发送我的请求,他们会随时回来,因为它们都是很好的异步调用。通常是一件好事。
查看Mongoose的文档(使用4.1.1),似乎它内置了一个承诺,但每当我尝试使用它时,api调用抛出一个非常合适的东西,我得到500回。
这是我的简单功能:
exports.getSkills = function(req,res) {
console.log("Will return tree of all skills");
for (var i = 0; i<10; i++){
var returnData = [];
console.log("Lets get level " + i );
var query = Skill.find({level: i });//The query function
var promise = query.exec; //The promise?
promise.then(function(doc) { //Totally blows up at this point
console.log("Something came back")
return "OK";
});
}
}
可以在此处找到关于该主题的Mongoose文档 http://mongoosejs.com/docs/api.html#promise_Promise
答案 0 :(得分:1)
var promise = query.exec;
// =>
var promise = query.exec()
exports.getSkills = function(req,res) {
console.log("Will return tree of all skills");
var p;
for (var i = 0; i < 10; i ++) {
if (i == 0 ) {
p = Skill.find({level:i}).exec();
} else {
p.then(function (){
return Skill.find({level:i}).exec()
})
}
p.then(function (data) {
//deal with your data
})
}
p.then(function () {
// deal with response
})
}