2012-09-01 7 views
5

Currenty Ich versuche, einen Fehler & Hinweis Funktion zu meinem expressjs App hinzuzufügen. Ich dachte, dassextendjs res property

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

die Ankündigung Funktion auf alle res angebracht würden durch den Aufruf in meiner Anwendung vorhandene Gegenstände, mir ermöglicht es wie folgt zu verwenden:

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

jedoch das obige Beispiel nicht funktioniert . Gibt es eine Möglichkeit, das zu erreichen, was ich versuche?

Antwort

8

Sie müssen next anrufen, nachdem Sie notice zu res hinzugefügt haben.

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

Und Sie müssen diese Middleware vor Routen Definition hinzufügen.

UPDATE:

Sie benötigen eine Middleware, bevor Router hinzuzufügen.

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

Danke für Ihre Antwort. Ich habe versucht, es so zu tun, wie Sie es beschrieben haben, jedoch beim Ausführen des folgenden Codes: var express = require ('express'); var app = express(); app.use (app.router); app.use (function (req, res, next) { res.notice = function (msg) { res.send ('[Hinweis]' + msg); }; next(); }) ; app.get ('/', Funktion (req, res)) { res.notice ('Test'); }); App.listen (3000); Ich bekomme: TypeError: Objekt # hat keine Methode 'notice' –

+0

Überprüfen Sie die Antwort update –

+0

Vielen Dank, jetzt funktioniert es wie erwartet! –