我想获得此功能 if(thereIsSomeError) //停止进一步执行。例如,如果中间件或回调中出现一些错误,那么我不想进一步执行回调(在 app.route 中)和中间件
我尝试了这段代码。但我仍然认为 req.err 为 true。我该如何解决这个问题
// My MiddleWare
export let Middleware=()=> {
return (req,res,next)=>{
next()
console.log(req.err) // Problem is here.. i'm still getting req.err(true)
if(!req.err){
db.query(`query`,(error, responseData)=>{
if(error) console.log(error)
db.query(`second query`,{...// send data to the
database})
})
}
}
}
//End point
app.post('/addStudent',Middleware, (req, res) => {
//setting error to true initially
req.err=true;
let data = req.body
db.query(`query `, data.username, (err, d) => {
if (err) return res.json(err)
else {
// since no Error accured so set the error to false
req.err=false;
let q = 'query';
let values = {//data here}
db.query(q, values, (err, data) => {
if (err) return res.status(200).json(err)
else return res.status(200).json({ data })
})
}
})
})
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
首先,中间件在请求之前运行,而不是之后。如果您在 POST 端点中设置
req.err = true,它将保持 TRUE,这意味着您的数据库调用肯定会返回错误。其次,要成功中止中间件调用,请使用
return。返回一个函数会立即停止它。您可以选择返回next(err)将错误转发给处理程序,或者使用return res.send('Error')终止响应中间件。