我有一个问题,我的代码无法返回已将数据推送到其中的数组,昨晚我发现这与闭包有关,我对其进行了研究,但并未真正得到它们。所有示例都使用addeventlistener。
我知道我必须以某种方式等到我的推送完成,因为这是异步的。
app.post("/search", function(req, res){
var test = []
for (var key in req.body.movie){
Movie.find({title: "Gotham"}, function(err, foundMovie){
test.push(foundMovie)
})
}
console.log(test)
res.render("index")
});
最佳答案
MongoDB / Mongoose操作是异步的。解决您的问题的一种可能方法是像这样使用async/await
。
app.post("/search", async function(req, res){
var test = []
for (var key in req.body.movie){
let foundMovie = await Movie.find({title: "Gotham"})
test.push(foundMovie)
}
console.log(test)
res.render("index")
});
您需要使用更新版本的Node才能进行异步/等待工作。 :)
也不要在循环中执行数据库查询。
关于javascript - Node js闭包需要推送到数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46527430/