Pulando rotas no expresso

A popular estrutura node.js, express, tem um recurso útil que não é anunciado e pode ser extremamente útil.

Suponha que você tenha uma página que deseja expirar após um determinado período de tempo e diga que ela expirou. Sem esse recurso mágico, você pode fazer algo assim:

app.get('/will-expire',
showPage
,
showExpiredPage

);

var hits = 0, maxhits = 10;
function showPage(req, res, next) {
// this is mixing in logic that doesn't
// belong here and isn't reusable
++hits;
if (hits > maxhits) return next();

res
.end('not expired!');
}

function showExpiredPage(req, res, next) {
res
.end('page is expired :(');
}

Podemos tornar esse código mais limpo, reutilizável e mais modular chamando nextcom a string route. Isso diz ao expresso para parar de executar os retornos de chamada para a rota correspondida e tentar fazer a correspondência com outra rota. Como isso:

app.get('/will-expire',
checkExpired
,
showPage

);

app
.get('/will-expire',
showExpiredPage

);

var hits = 0, maxhits = 10;
function checkExpired(req, res, next) {
// next('route') will go to the next matched route
// this is the magic we use to clean up our code
++hits;
if (hits > maxhits) return next('route');
next();
}

// showPage now is cleaner
function showPage(req, res, next) {
res
.end('not expired!');
}

function showExpiredPage(req, res, next) {
res
.end('page is expired :(');
}