Node js中间件,用于向mongo发出异步请求

Node js middleware for async request to mongo

本文关键字:异步 请求 mongo js 中间件 用于 Node      更新时间:2023-10-22

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

所以所有我需要添加头像字段张贴对象。

它看起来像这样。

在mongodb中有两个模型用户和帖子。发布一对多关系的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结构。我不想在每次请求时都得到所有的帖子和所有的用户。也许你可以帮我。它可能是中间件的东西——但我试过了,但没有帮助。

underline.each()对此无效。您需要使用类似async.ech()的东西来确保在返回响应中的结果之前获得所有化身。有些事情是这样的(你可能需要做一些错误处理):

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);
        });
    });
};