gpt4 book ai didi

node.js - Res.send 在 Function Model.find() Nodejs 之前进行

转载 作者:太空宇宙 更新时间:2023-11-04 02:08:16 25 4
gpt4 key购买 nike

我在尝试查找值 throw 2 模型时遇到问题

.get(function(req, res) {
var sellerPosts = [];
Product.find({seller_id : req.params.seller_id}, function(err, products) {
if (err) throw err;
for (var i = 0; i < products.length; i++) {
console.log("id", products[i].id);
Post.find({product_id : products[i].id}, function(err, posts) {
if (err) throw err;
for (var j = 0; j < posts.length; j++) {
sellerPosts.push(posts[j]);
console.log("in find",sellerPosts);

}
});
console.log(sellerPosts);
}
console.log("test", sellerPosts);

res.send(sellerPosts);
});

})

这是日志:

App listening on port 3000!
Connected to database
id 58ea96464429aa154cb8c43a
[]
id 58ed3171a0cc7f20f4c74c1c
[]
test []
in find [ { _id: 58ed28b8993a2317e41fc742,
product_id: 58ea96464429aa154cb8c43a,
phone: 9123123,
address: 'hanhitie17',
other: 'no others',
__v: 0 } ]
in find [ { _id: 58ed28b8993a2317e41fc742,
product_id: 58ea96464429aa154cb8c43a,
phone: 9123123,
address: 'hanhitie17',
other: 'no others',
__v: 0 },
{ _id: 58ed33cea0cc7f20f4c74c1d,
product_id: 58ed3171a0cc7f20f4c74c1c,
phone: 9123123,
address: 'hanhitie17',
other: 'no others',
__v: 0 } ]

第一个 sellerPosts 仍然打印出真实值,但“测试”日志为空。做了一些日志之后。我认为这是因为在 Product.find() 中的第一个 for 之后,程序运行 res.send,然后运行 ​​Post.find()。请帮我解决这个问题!!!!

最佳答案

您在循环中调用Post.find,这会导致问题,因为它是一个异步操作,您需要使其顺序化。您可以使用异步库来完成此操作,如下面的代码所示。

.get(function(req, res) {
var sellerPosts = [];
Product.find({seller_id : req.params.seller_id}, function(err, products) {
if (err) throw err;
async.eachSeries(products, function(product, next){
Post.find({product_id : product.id}, function(err, posts) {
if (err) next(err);
for (var j = 0; j < posts.length; j++) {
sellerPosts.push(posts[j]);
console.log("in find",sellerPosts);
}
next(null);
});
}, function(err){
if(err) throw err;
res.send(sellerPosts);
})
});

})

关于node.js - Res.send 在 Function Model.find() Nodejs 之前进行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43369812/

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