1

Доброго времени суток,

Только недавно начал изучать node.js с javascript и застрял на правильной обработке ошибок.

Вот код роутера(router.js):

router.get('/person/:idperson', function(req, res, next) {
  pool.query('SELECT nickname, regdate, place, birthdate, sex, aboutme FROM person WHERE idperson = ?', req.params.idperson, function(err, rows, fields, next) {
    if (err) return next(err);  //выбрасывает ошибку mysql-запроса в app.js
------- Как обработать ошибку возникшую в этой части - непонятно        
if (!rows[0]) res.render('patrials/error', { pageTitle: 'Персона не найдена', errormesage: 'Такого человека нет'})
    else res.render('person', { pageTitle: rows[0].nickname+' | Профиль', sqlperson : rows[0]});
-------
  });
---- При этом ошибки возникающие тут(если написать), отлично выбрасываются в app.js
});

Вот обработчик ошибок(app.js):

app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('patrials/error', {
    message: err.message,
    error: err
  });
});

P.S. Вообще, по идее, res.render не должен быть во вложенной функции Mysql-запроса, но я пока не разобрался, как заставить рендер ждать ответа функции, запрашивающей информацию в бд, и правильно передать результат в другую область видимости.

enhaster
  • 129

0 Answers0