在nodejs应用程序中扩展快速app.get方法

我试图扩展app.get行为,但似乎在做这件事之后,应用程序在扩展之前会损失一些configuration。

在下面的代码片段中, / sample/ es / sample输出是空的 ,预期的输出应该是'value'

难道我做错了什么?

var app = require('express')(); app.set('myprop', 'value'); var _get = app['get']; app['get'] = function (route, middleware, callback) { _get.call(app, route, middleware, callback); // For instance: I generate a new route for 'es' language. _get.call(app, '/es' + route, middleware, callback); }; app.get('/sample', function(req, res){ res.send(app.get('myprop')); }); app.use(app.router); app.listen(3000); 

UPDATE

对不起,我会回答自己…

我错过了以下第一行的扩展方法:)

 if (middleware === undefined && callback === undefined) return _get.call(app, route); 

现在它就像一个魅力!

 app['get'] = function (route, middleware, callback) { if (middleware === undefined && callback === undefined) return _get.call(app, route); _get.call(app, route, middleware, callback); // For instance: I generate a new route for 'es' language. _get.call(app, '/es' + route, middleware, callback); }; 

在你的代码中,你用一个参数破坏了app.get行为。 尝试这个:

 var app = require('express')(); app.set('myprop', 'value'); var _get = app['get']; app['get'] = function (route, middleware, callback) { if (arguments.length > 1) { _get.call(app, route, middleware, callback); // For instance: I generate a new route for 'es' language. _get.call(app, '/es' + route, middleware, callback); } else { return _get.apply(app, arguments); } }; app.get('/sample', function(req, res){ res.send(app.get('myprop')); }); app.use(app.router); app.listen(3000);