Isso é útil para fazer qualquer pré ou pós-processamento no resultado final de sua renderização.
Isso deve ser colocado no alto da matriz de middleware, para garantir que todas as chamadas para res.render
sejam tratadas pela mesma função.
https://gist.github.com/mrlannigan/5051687
/**
* Override res.render to do any pre/post processing
*/
app.use(function(req, res, next) {
var render = res.render;
res.render = function(view, options, fn) {
var self = this,
options = options || {},
req = this.req,
app = req.app,
defaultFn;
if ('function' == typeof options) {
fn = options, options = {};
}
defaultFn = function(err, str){
if (err) return req.next(err);
self.send(str);
};
if ('function' != typeof fn) {
fn = defaultFn;
}
render.call(self, view, options, function(err, str) {
// do whatever post processing you want
fn(err, str);
});
};
next();
});