поймать исключение при выдаче ошибки с использованием nodejs

Я хочу создать API-интерфейс, и я хочу поймать ошибку, когда я выдаю ошибку, но она не работает

контроллер.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
    });

});

person Dong Truong    schedule 29.12.2014    source источник
comment
Как вы ловите исключение ?? Простой try.. catch работает в js.   -  person Ravi    schedule 29.12.2014


Ответы (1)


Вам не нужно выдавать ошибку, поскольку она останавливает выполнение всего скрипта.

С экспрессом вы можете просто передать ошибку функции 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);
        }
    });
});
person Vsevolod Goloviznin    schedule 29.12.2014