2012-09-01 26 views
5

現状&通知機能をexpressjsアプリに追加しようとしています。しかし拡張expressjs resプロパティ

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

、上記の例は動作しません:私はすべての解像度に取り付けられる

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

通知機能を呼び出すことにより、次のようにそれを使用するために私ができるように、自分のアプリケーションに存在する物体と思いました。私がしようとしていることを達成する方法はありますか?

答えて

8

noticeメソッドをresに追加した後にnextに電話する必要があります。

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

ルート定義の前にこのミドルウェアを追加する必要があります。

更新日:

ルーターの前にミドルウェアを追加する必要があります。

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

ご回答ありがとうございます。私はそれをあなたがそれを記述したようにしようとしましたが、次のコードを実行しています: var express = require( 'express'); var app = express(); app.use(app.router); app.use(関数(REQ、RES、次){ res.notice =関数(MSG){ res.send( '[お知らせ]' + MSG); }; 次の();} ) ; app.get( '/'、function(req、res){ res.notice( 'Test'); }); app.listen(3000); TypeError:オブジェクト#にはメソッド「通知」がありません –

+0

回答の更新を確認してください –

+0

ありがとうございます、今は期待どおりに動作します! –

関連する問題