Доброго времени суток,
Только недавно начал изучать 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-запроса, но я пока не разобрался, как заставить рендер ждать ответа функции, запрашивающей информацию в бд, и правильно передать результат в другую область видимости.