Node js中间件,用于向mongo发出异步请求
Node js middleware for async request to mongo
现在我正在处理我的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);
});
});
};
相关文章:
- 如果需要登录,Angularjs$http拦截器会暂停异步请求
- RxJS异步请求更新
- Node js中间件,用于向mongo发出异步请求
- AJAX-如何在不冻结浏览器的情况下逐个发出异步请求
- 如何等待异步请求完成
- 为什么Chrome似乎异步请求Javascript文件
- 使用异步请求多个网址
- 在HTML中,可以在没有Ajax和/或Javascript的情况下创建异步请求
- 节点 JS 使用异步请求同步工作流
- 如何处理客户端节点上的异步请求
- 具有异步请求的 NodeJS
- 使用请求-承诺的嵌套异步请求
- 将数据从异步请求添加到 WebSQL 数据库时出错
- 使用 Jasmine 测试触发异步请求的方法
- 状态 = 0 的异步请求
- 在 Node.js 服务器内发出异步请求错误:“类型错误:对象 #<对象> 没有方法'_implicitHeader'”
- 如何使用 jquery ajax 向 PHP 页面发送异步请求
- 承诺解析错过异步请求循环的一个值
- 用于处理成功、失败、重试的异步请求的设计模式?(JavaScript)
- 如何处理对循环中发出的多个异步请求(AJAX 调用)的响应