现在我正在研究我的nodejs应用程序。但我有一些问题。
所以我需要添加头像字段来发布对象。
看起来像这样。
在mongodb中有2个模型用户和帖子。发布有一对多关系的userId字段。并且用户有头像是我在屏幕上存储图像标签的字符串。
但是我希望显示所有用户头像的帖子,这是我的家庭方法来自controllers / articles.js
exports.home = function () {
Article.list( function (err,articles) {
_.each(articles, function (item){
User.find({is:item.id}, function(err, user)
{
item.avatar = user.avatar
})
})
})
}
但它不起作用。我明白这是异步问题。但我不知道如何解决它。我不想改变我的mongodb结构。我不希望在每个请求期间获得所有帖子和所有用户。所以也许你帮帮我吧。桅杆是中间件的东西 - 但我已经尝试过它并没有帮助。
答案 0 :(得分:2)
underscore.each()不适用于此。您需要使用async.each()之类的东西来确保在返回结果返回响应之前获取所有头像。这样的事情(你可能需要做一些错误处理):
var async = require('async');
exports.home = function (res) {
Article.list( function (err,articles) {
async.each(articles, function (item, callback){
User.find({is:item.id}, function(err, user) {
if (user) {
item.avatar = user.avatar;
}
callback(null);
});
}, function(err) {
// after finding all avatars, return your articles (with avatars if available)
// back in the response
res.send(articles);
});
});
};