【发布时间】:2021-02-11 17:21:46
【问题描述】:
假设我有一个 api.js:
const {somefunction} = require('../controllers/some-controller');
app.get('/data/', somefunction);
some-controller.js:
exports.somefunction = async (req, res,next) => {
const someVariable = req.params.variable
try {
console.log('status',res.statusCode) **//status code is: 200**
const Details = await collectionName.find({}).exec()
res.send(Details)
} catch {
console.log('status',res.statusCode) **//Here also,status code is: 200**
next(ApiError.dbError('Internal Server Error')); //middleware for error handling gives output
//as ApiError { code: 500, message:
//'Internal Server Error' }
return;
}
};
假设我在 res.send(Detaaal) 中写了一些错误的变量名,它会去 catch 块 这里甚至在 catch 块状态码是 200。
我试图了解状态代码在什么情况下不同。为什么在 catch 块内失败的状态码响应没有给我 500 状态码。
【问题讨论】:
-
ApiError.dbError返回什么? -
我想出了它如何返回 500 错误。在 catch 块中 if i console: catch { console.log('status',res.statusCode) //这里同样,状态码是:200 next(ApiError.dbError('Internal Server Error')); console.log('status',res.statusCode) //这里也是,状态码是:500 return;从 APIError 的状态码我得到状态码并相应地设置它
标签: javascript node.js express