2012-09-01 8 views
5

Actualmente estoy tratando de agregar un error & función de aviso a mi aplicación expressjs. Pensé que llamandoextender la propiedad expressjs res

app.use(function (req, res, next) { 
    res.notice = function (msg) { 
    res.send([Notice] ' + msg); 
    } 
}); 

la función de notificación se adjunta a todos los res objetos presentes en mi solicitud, me permite utilizarlo como sigue:

app.get('something', function (req, res) { 
    res.notice('Test'); 
}); 

Sin embargo, el ejemplo anterior no funciona . ¿Hay alguna manera de lograr lo que estoy tratando de hacer?

Respuesta

8

Debe llamar al next después de agregar el método notice al res.

app.use(function (req, res, next) { 
    res.notice = function (msg) { 
    res.send('[Notice] ' + msg); 
    } 
    next(); 
}); 

Y necesita agregar este middleware antes de la definición de rutas.

ACTUALIZACIÓN:

Es necesario añadir su middleware antes router.

var express = require('express'); 
var app = express(); 

app.use(function (req, res, next) { 
    res.notice = function (msg) { 
     res.send('[Notice] ' + msg); 
    }; 
    next(); 
}); 

app.use(app.router); 
app.get('/', function (req, res) { 
    res.notice('Test'); 
}); 

app.listen(3000); 
+0

Gracias por la respuesta. Intenté hacerlo como lo describiste, sin embargo, al ejecutar el siguiente código: var express = require ('express'); var app = express(); app.use (app.router); app.use (function (req, res, siguiente) { res.notice = función (msg) { res.send ('[Aviso]' + msg); }; next(); }) ; app.get ('/', función (req, res) { res.notice ('Prueba'); }); app.listen (3000); Aparece: TypeError: Objeto # no tiene método 'aviso' –

+0

Comprobar la actualización de la respuesta –

+0

Muchas gracias, ¡ahora funciona como se esperaba! –