Nodejs: создание переменных уровня маршрутизации в expressjs

Я новичок в выражении. Я не понимаю, как я могу установить переменную во вспомогательной функции, а затем использовать ее в функции app.get ().

var authenticate = (req,res,next) => {

// I need to set a user specific variable here
next();

}

app.use(authenticate);

app.get("/",(req,res)=>{

// I need to access the variable here.

});

Обратите внимание, что значение переменной может варьироваться в зависимости от вызова браузера. Таким образом, у переменной должна быть область видимости только для вызова. Я не понимаю, как его настроить? Кто-нибудь может помочь?

1
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Лучше всего добавить его в область req, здесь у вас есть документация по этому поводу http://expressjs.com/en/api.html#req

var authenticate = (req,res,next) => {

    req.authenticatedUser = {name: 'a'}
    next();

}

app.use(authenticate);

app.get("/",(req,res)=>{

    console.log(req.authenticatedUser);

});

Спасибо! Думаю, это было то, что я искал. Но могу ли я добавить любое количество таких переменных, как req. <anything>, или мне следует использовать что-то вроде req.locals. <anything>?

Jab2Tech 10.09.2018 11:35

Также я надеюсь, что это применимо ТОЛЬКО для этого конкретного запроса .. верно?

Jab2Tech 10.09.2018 11:35

Конечно, это запрос, и OFC этот запрос присутствует только в этом единственном вызове. Также его можно использовать как req.<anything>, но помните, что нельзя перезаписывать другие значения, которые могут содержать ценную информацию (см. Документацию по запросу).

Alejandro Vales 10.09.2018 11:38

Благодарность! это помогает! Опять же, я могу использовать здесь объект ... верно? Я все еще могу использовать req.locals. <Что-нибудь> .. верно?

Jab2Tech 10.09.2018 11:46

Другие вопросы по теме