我有一个问题,我的代码不会返回已将数据插入的数组,我昨晚发现这是关于闭包的问题,我研究了它们,但我并没有真正理解它们。所有示例都使用 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 才能使 async/await 工作。 :)
也不要在循环中执行数据库查询。
关于javascript - Node js 闭包需要推送到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46527430/