我会创建中间件来处理错误。使用next()
对于 404。和next(err)
对于其他错误。
app.get('/xxx/:id', function(req, res, next) {
Xxx.findById(req.params.id).exec()
.then(function(xxx) {
if (xxx == null) return next(); // Not found
return res.send('Found xxx '+request.params.id);
})
.then(null, function(err) {
return next(err);
});
});
404 处理程序
app.use(function(req, res) {
return res.send('404');
});
错误处理程序
app.use(function(err, req, res) {
switch (err.name) {
case 'CastError':
res.status(400); // Bad Request
return res.send('400');
default:
res.status(500); // Internal server error
return res.send('500');
}
});
您可以通过发送 json 响应来进一步改进这一点,例如:
return res.json({
status: 'OK',
result: someResult
});
or
return res.json({
status: 'error',
message: err
});