node.js - 为什么会发生这种情况,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,对于我的愚蠢问题,我很抱歉。
解决方案
Item.findByIdAndRemove()
是异步的。这意味着它的回调会在函数返回后的某个时间被调用。所以,你想在Item.findByIdAndRemove()
完成后执行的任何事情都必须在它的回调中。这是 node.js 中的标准异步行为。
因此,当您将重定向放在回调之外时,它会在数据库操作完成之前执行。
推荐阅读
- c++ - 仅在使用 Qt creator 时链接错误
- ajax - 使用参数 POST 重新加载 Ajax 数据表
- datepicker - 基于 WTL 更改 Datepicker 单元格的大小
- json - Swift 4错误序列化json typeMismatch
- amp-html - 将状态映射到 amp-list [src]
- android - 使用 Android L 以下的 KeyGuardManager 时应用程序崩溃
- dji-sdk - matrice600pro 在现实世界中不会被 osdk 旋转
- android - ACTION_TIME_CHANGED 广播每分钟调用一次
- c# - 将 Kofax Release 文档转换为二进制文件
- javascript - Rxjs/reactor 限制运算符等效于 ajax 请求