MongoDB用にnode.js、express、MongoSkinドライバーを使用しています。
ブログ投稿のリストを表示するビューをブログアプリケーションでレンダリングしようとしています。各投稿には、作成者IDへの参照があります。各参照の完全な著者ドキュメントを取得するために、各投稿に対して2番目のクエリを作成しようとしています。すべてが非同期であると、私はかなり混乱します。
ブログ投稿のリストを取得するためのコールバックで、各投稿をループし、関連するユーザーを取得するために2回目の呼び出しを行います。すべての投稿に作成者ドキュメントが追加された後でのみビューをレンダリングする方法がわかりません。私はこの権利のいずれかを行っているかどうかさえわかりません。他のドキュメントを参照して、やりたいことを達成するにはどうすればよいですか?
// getPageOfPosts is a custom helper that accepts the page number and number of items to retrieve.
db.collection('blogPosts').getPageOfPosts(req.param('page') || 1, 3, function (err, blogPosts) {
if (err) req.next(err);
blogPosts.forEach(function (blogPost) {
db.collection('users').findOne({ _id: blogPost.authorId }, function (err, user) {
if (err) req.next(err);
blogPost.author = user;
});
});
var viewModel = {
posts: blogPosts
};
res.render('blog/index', viewModel);
});