2012-11-03 18 views
6

app.get davranışını genişletmeye çalışıyorum ama bunu yaptıktan sonra uygulama, onu genişletmeden önce yaptığım bazı yapılandırmalarda kayıp veriyor. Aşağıdaki pasajdaBir nodejs uygulamasında ekspres app.get yöntemini genişletme

/örnek ve /es/numune çıkış boş ve beklenen çıkışı 'değer'

ben yanlış mı yapıyorum olmalıdır?

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); 

GÜNCELLEME

Üzgünüm,

Ben uzatma yönteminin :) şimdi gibi çalışır

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

aşağıdaki ilk satırı cevapsız ... kendim cevap verecektir bir çekicilik! Kodunuzda

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); 
}; 

cevap

1

tek argüman ile kırdı app.get davranış vardır. Bunu deneyin:

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); 
+0

Teşekkürler Vadim! Soruyu yazdıktan sonra anladım :) Soruyu çözümle de güncelledim ama seninki çok daha iyi. – user1796747

+0

sadece ilgisiz ... Bu satırı nedir? App.listen (3131); vadim @ zapp: ~/çalışma alanı/test $ cat./Ex.js' ?? – Val

+0

@Val, bu kopyala/kopyala kopyalamadır. Sabit. Teşekkürler. –

İlgili konular