我試圖顯示論壇/類別。我需要獲得最新的帖子。問題是我還需要每個帖子的用戶數據以及最新的回覆。mongodb獲取每個文檔的用戶信息
db.post.find({
"inForum": forumID,
},
{
'sort': [['date', -1]]
},
function(err, cursor) {
cursor.count(function(err, count) {
cursor.skip(skip).limit(20).toArray(function(err, posts) {
var complete = _.after(nodes.length, function() {
res.send(posts)
});
// for every post get its author info and the latest post info
posts.forEach(function (post) {
var users = _.pluck(posts, 'user');
user.load(users, function (profiles) {
_.each(posts,
function(post, k) {
if (profiles[post.user]) post.fieldAvatar = profiles[post.user].fieldAvatar;
});
if (post.latestReply) {
post.load(post.latestReply.id, function (latestReply) {
if (latestReply) post.latestReply = latestReply
complete()
})
}
else {
complete()
}
})
})
});
})
})
這就是我正在做的事情,它對我來說似乎很慢/真的不雅。我是否正確地做這件事,並有任何建議加快這一點?
謝謝。
是的,我其實在我的代碼的其他地方有這種優化,但我忘了把它包括在例子中。 user.load使用'「$ in」:users'而不是循環執行 – Harry 2011-12-26 10:30:04
如果你執行了任何一個(最好是第一個)提到的東西,那麼你會很好。 – alessioalex 2011-12-26 10:32:20
謝謝,有趣的是我用它做了它,但用循環來傳遞數組。愚蠢的我,謝謝 – Harry 2011-12-26 10:40:08