2014-12-29 1 views
0

Я хочу построить апи resful, и я хочу, чтобы поймать ошибку, когда я бросить ошибку, но она не работаетисключения задвижки, когда ошибка броска с помощью nodejs

controller.js

Article.findOne ({_ идентификатор : my_id}, функция (ошибка, статья) {

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

Как вы ловите исключение? Простой 'try .. catch' работает в js. – Ravi

ответ

2

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

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