Передача переменных в следующее промежуточное программное обеспечение с помощью 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 96

5 ответов:

прикрепите переменную к req объект, а не res.

вместо

res.somevariable = variable1;

есть:

req.somevariable = variable1;

как уже отмечалось, res.locals рекомендуемый способ передачи данных через промежуточное программное обеспечение.

Это 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
}