Javascript 节点js中间件,用于向mongo发出异步请求
现在我正在开发我的nodejs应用程序。但是我有一些问题 所以,我需要添加的所有阿凡达字段后的对象 看起来像这样 在mongodb中有2个模型用户和post。Post具有一对多关系的用户ID字段。和用户有头像是我存储字符串的图像标签在屏幕上 但是我想用用户头像显示所有帖子,这是controllers/articles.js中我的主页方法Javascript 节点js中间件,用于向mongo发出异步请求,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,现在我正在开发我的nodejs应用程序。但是我有一些问题 所以,我需要添加的所有阿凡达字段后的对象 看起来像这样 在mongodb中有2个模型用户和post。Post具有一对多关系的用户ID字段。和用户有头像是我存储字符串的图像标签在屏幕上 但是我想用用户头像显示所有帖子,这是controllers/articles.js中我的主页方法 exports.home = function () { Article.list( function (err,articles) {
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结构。我不想在每次请求中都得到所有帖子和所有用户。也许你能帮我。这可能与中间件有关,但我已经尝试过了,但没有任何帮助 下划线。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);
});
});
};