gpt4 book ai didi

javascript - 用于对 mongo 进行异步请求的 Node js 中间件

转载 作者:行者123 更新时间:2023-11-30 17:45:52 24 4
gpt4 key购买 nike

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

所以我只需要添加头像字段来发布对象。

看起来像这样。

在 mongodb 中有 2 个模型用户和帖子。 Post 有一对多关系的 userId 字段。如果我在屏幕上存储图像标签的字符串,用户就会有头像。

但我想显示所有带有用户头像的帖子,所以这是我来自 controllers/articles.js 的 home 方法

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 结构。而且我不想在每个请求期间获取所有帖子和所有用户。所以也许你可以帮助我。它可能与中间件有关 - 但我已经尝试过但没有帮助。

最佳答案

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

关于javascript - 用于对 mongo 进行异步请求的 Node js 中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20196950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com