我有一组帖子和一组用户。返回帖子列表时,我想解决对用户的引用。这意味着对每一行用户进行异步调用。当和尚返回一个承诺时,它返回一个响应“完成”或“成功”的东西。Q 期望对“then”做出响应。我需要使用 Q.all 来等待所有用户都被拉入帖子,但我不能让它与和尚的承诺风格很好地配合。
这是我的尝试。
exports.posts = function (req, res) {
req.posts.find()
.complete(function(err, posts) {
handle(err, res, posts);
var postsWithUsers = posts.map(function(post) {
return req.users.findOne({_id: post.userId}).complete(function(err, result) {
post.user = result;
});
});
Q.all(postsWithUsers.map(function(monkPromise) {
monkPromise.then = monkPromise.complete
}), function(err, results) {
console.log("done with all posts");
});
});
};