Роутинг, или кому передаёт управление next?

День добрый, коллеги.


Вот с такой маршрутизацией всё понятно —
app.get('/', middleWare, function (req, res) {
    res.render('index', { s: 'hello' });
});


, где middleWare может быть массивом вложенных ф-ий, у каждой из которых есть вызов next(). И если вызывать next без параметров, то управление передаётся дальше (а данном случае попадём в res.render), иначе…

Вот тут-то и вопрос, а что иначе-то?

По дефолту текст ошибки прям в виде текста выдаётся на консоль и пользователю, посему я делал такие «обёртки» вида
'someMiddlewareFunction': function (errfunc) {             
            return function (req, res, next) {              
// .. code
                    if (someFlag) {
                        errfunc(global.ERR_AUTH_NOT_LOGGED_IN, req, res);
                    }
                    else {
                        next();
                    }
// .. code
        }



Ну а потом просто передавал в эту ф-ию другую ф-ию, которая и рендерила мне красивую страничку с номером 500 и описанием ошибки.


Но насколько такой подход правильный?


И ещё — куда вообще передаётся управление при вызове next('ERROR') в таком контексте? —
app.get( '/users/:id([0-9]+)', function (req, res, next) {
    if (id > 10) {
// .. some code
        }
        else {
            next('ERROR');            
        }
});


И каким образом подобные ошибки ловить?


Спасибо.
  • Вопрос задан
  • 2510 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
kuzemchik
@kuzemchik
насколько я понимаю
app.configure('development', function(){
	app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
});

app.configure('production', function(){
	app.use(express.errorHandler()); 
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы