Skipping routes in express
The popular node.js framework, express, has a handy feature that isn't advertised, and can be extremely handy.
Suppose you have a page that you want to expire after a certain amount of time, and then say it's expired.Without this magical feature you might do something like this:
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 :(');
}
We can make this code cleaner, reusable, and more modular by calling next with the string route. This tells express to stop running the callbacks for the matched route, and go try to match another route. Like this:
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 :(');
}Written by Adam Blackburn
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Nodejs
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#