Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点js中间件,用于向mongo发出异步请求_Javascript_Node.js_Mongodb_Express - Fatal编程技术网

Javascript 节点js中间件,用于向mongo发出异步请求

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) {

现在我正在开发我的nodejs应用程序。但是我有一些问题

所以,我需要添加的所有阿凡达字段后的对象

看起来像这样

在mongodb中有2个模型用户和post。Post具有一对多关系的用户ID字段。和用户有头像是我存储字符串的图像标签在屏幕上

但是我想用用户头像显示所有帖子,这是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结构。我不想在每次请求中都得到所有帖子和所有用户。也许你能帮我。这可能与中间件有关,但我已经尝试过了,但没有任何帮助

下划线。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);
        });
    });
};