Передача переменных в следующее промежуточное программное обеспечение с помощью next () В Express.js
Ну, мой вопрос в том, что я хочу передать некоторую переменную из первого промежуточного программного обеспечения в другое промежуточное программное обеспечение, и я попытался это сделать, но там было"req.somevariable
задается как 'неопределенный'".
//app.js
..
app.get('/someurl/', middleware1, middleware2)
...
////middleware1
...
some conditions
...
res.somevariable = variable1;
next();
...
////middleware2
...
some conditions
...
variable = req.somevariable;
...
5 ответов:
прикрепите переменную к
req
объект, а неres
.вместо
res.somevariable = variable1;
есть:
req.somevariable = variable1;
как уже отмечалось,
res.locals
рекомендуемый способ передачи данных через промежуточное программное обеспечение.
Я не думаю, что лучшая практика будет передавать переменную, как
req.YOUR_VAR
. Возможно, вы захотите рассмотретьreq.YOUR_APP_NAME.YOUR_VAR
илиreq.mw_params.YOUR_VAR
.Это поможет вам избежать перезаписи другими атрибутами.
потому что
req
иres
это два разных объекта.вам нужно искать свойство на том же объекте, к которому вы его добавили.
трюк довольно прост... Цикл запроса все еще довольно жив. Вы можете просто добавить новую переменную, которая создаст временную, вызывая
app.get('some/url/endpoint', middleware1, middleware2);
так как вы можете обрабатывать ваш запрос в первом middleware
(req, res, next) => { var yourvalue = anyvalue }
в middleware 1 вы обрабатываете свою логику и сохраняете свое значение, как показано ниже:
req.anyvariable = yourvalue
в middleware 2 Вы можете поймать это значение из middleware 1, выполнив следующие действия:
(req, res, next) => { var storedvalue = req.yourvalue }