我想构建api resful,我想在抛出错误时捕获错误,但它无法正常工作
controller.js
Article.findOne({_ id:my_id},function(err,article){
if(article === null){
throw Error('Article is not found');
}else{
res.status(200).json(article);
}
});
当my_id不在数据库中时,我无法捕获错误并响应json app.js
app.use(function(err, req, res, next) {
res.status(200).json({
'status' : 500,
'messages' : err
});
});
答案 0 :(得分:2)
您不需要抛出错误,因为它会停止整个脚本的执行。
使用express,您只需将错误传递给next
函数,错误捕获器就可以正常工作。
router.get('/', function(req, res, next) {
Article.findOne({_id: my_id}, function(err, article) {
if(article === null){
var error = Error('Article is not found');
next(error);
}else{
res.status(200).json(article);
}
});
});