【发布时间】:2017-08-01 11:12:24
【问题描述】:
您好,我是 nodejs 和 mongodb 的新手,在解决第二个承诺后,我无法解决我的第一个承诺。解决后我可以看到我的第二个承诺的结果。这是我的代码
var getShows = function () {
return new Promise(function (resolve, reject) {
usersdb.find(function (err, result) {
if(err) return console.error(err);
var usersFromCall = result;
var task = function (users) {
return new Promise(function (resolve, reject) {
var user = {
'name': '',
'pages': []
}
user.name = users.show;
console.log(users);
pagedb.find({'show' : user.name}, function (err, resp) {
for(var j = 0 ; j <resp.length; j ++){
var pages = { 'pageId': ''};
pages.pageId = resp[j].pageId;
user.pages.push(pages);
}
console.log(user);
resolve({show: user});
})
});
};
var actions = usersFromCall.map(task);
return Promise.all(actions);
}).then(function () {
resolve()
})
});
};
在 find 之后,我是否在 then 函数中解析第一个承诺?
【问题讨论】:
-
如果你的代码没有导致错误,这意味着
usersdb.find正在返回一个promise,这意味着你需要避免promise constructor anti pattern