0

投稿のコレクションとユーザーのコレクションがあります。投稿のリストを返すときに、ユーザーへの参照を解決したいと考えています。これは、ユーザーのすべての行に対して非同期呼び出しを行うことを意味します。monk が promise を返すときは、「完了」または「成功」に応答するものを返します。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");
        });
    });
};
4

1 に答える 1