jak kod wygląda jesteś Korzystając z ekspresu, możesz korzystać z ekspresowych miejscowych aplikacji i wyrażać locals wyników, aby przekazywać zmienne do trasy. Podczas gdy inne odpowiedzi proponują działające rozwiązania, uważam, że używanie mechanizmów ekspresowych do ustawiania tych zmiennych jest mniej kłopotliwe.
W przypadku miejscowej odpowiedzi (See Express API reference) należy najpierw ustawić zmienną w oprogramowaniu pośredniczącym lub trasie. Pokażę podejście middleware
app.use(function(req,res, next) {
res.locals.top = 200;
next();
});
wtedy w trasie można uzyskać dostęp poprzez tę właściwość res.locals.variablename
exports.gettop = function(req, res) {
console.log(res.locals.top);
res.send(200);
};
W przypadku, gdy chcesz, aby te ustawienia aplikacji szeroki lepszym rozwiązaniem jest używać miejscowych aplikacji (See Express API reference)
ustawić zmienne mieszkańców aplikacji można użyć
app.locals.top = 100;
Aby uzyskać dostęp do tej zmiennej z trasy używać
exports.gettop = function(req, res){
console.log(req.app.locals.top);
res.send(200);
};
To zaoszczędziło mi wiele problemów i czasu! Dzięki! – Tobi
To dziwne, że ta logika nie działa, gdy związana funkcja (routes.gettop) jest metodą "dziedziczoną" (tj. Zdefiniowana w łańcuchu prototypów obiektu, a nie jako samodzielna metoda). Program obsługi jest zarejestrowany, ale nigdy nie jest wywoływany! – LexLythius
@LexLythius, że nigdy nie zostanie wywołany, brzmi dziwnie. Mogę sobie wyobrazić, że zostanie wywołany z niepoprawnym kontekstem, który w moim przykładzie to 'null', ale dla metody związanej prawdopodobnie powinna być instancja (' routes'). – robertklep