我有一个问题,我的代码无法返回已将数据推送到其中的数组,昨晚我发现这与闭包有关,我对其进行了研究,但并未真正得到它们。所有示例都使用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/

10-16 14:33