Próbuję rozszerzyć zachowanie app.get, ale wygląda na to, że po wykonaniu tej czynności utraciłem konfigurację, którą wykonałem, zanim ją rozszerzyłem.Rozszerzanie ekspresowej metody app.get w aplikacji nodejs
W poniższym fragmencie /próbkę i /es/próbkę wyjściowe są pusty i oczekiwany wynik powinien być „wartość”
Czy robię coś źle?
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
Niestety, odpowiem sobie ...
brakowało mi następującą pierwszą linię w metodzie wydłużania :)
if (middleware === undefined && callback === undefined) return _get.call(app, route);
teraz działa jak urok!
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);
};
Dzięki Vadim! Zorientowałem się po napisaniu pytania :) Zaktualizowałem też moje pytanie z rozwiązaniem, ale twoje jest znacznie lepsze. – user1796747
po prostu nie interesuje ... co to za linia o 'app.listen (3131), vadim @ zapp: ~/workspace/test $ cat./Ex.js' ?? – Val
@Val, to jest kopiowanie/wklejanie. Naprawiony. Dzięki. –