首页 > 解决方案 > 为什么会发生这种情况,res.redirect() 方法的范围仅限于 express 中的 findByIdAndRemove 方法

问题描述

如果我在 findByIdAndRemove 范围内编写 res.redirect() ,则它将其重定向到新的更新页面,但如果我将重定向方法放在该方法范围之外,它不会将其重定向到更新页面,我必须手动点击浏览器上的刷新按钮。有人可以向我解释发生了什么吗?

app.post('/delete',function (req,res) {

Item.findByIdAndRemove(req.body.checkbox, function (err) {
        if (err) {
            console.log(err);

        } else {
            console.log('Successfully deleted record!');

        }
           res.redirect('/')
    })

                                        **<--- but if i write it here it's not working!**

})

详细的解释将不胜感激,我刚刚开始学习 express 和 mongoDB,对于我的愚蠢问题,我很抱歉。

标签: node.jsmongodbexpress

解决方案


Item.findByIdAndRemove()是异步的。这意味着它的回调会在函数返回后的某个时间被调用。所以,你想在Item.findByIdAndRemove()完成后执行的任何事情都必须在它的回调中。这是 node.js 中的标准异步行为。

因此,当您将重定向放在回调之外时,它会在数据库操作完成之前执行。


推荐阅读