javascript - уроки - middleware js




передача переменных в следующее промежуточное программное обеспечение с помощью next() в expressjs (3)

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

Вместо

res.somevariable = variable1;

Есть:

req.somevariable = variable1;

Редактировать:

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

https://code.i-harness.com

Ну, мой вопрос в том, что я хочу передать некоторую переменную из первого промежуточного программного обеспечения в другое промежуточное ПО, и я попытался сделать это, но был req.somevariable, данный как «undefined».

//app.js
..
app.get('/someurl/',middleware1,middleware2)
...
////middleware1
...
some conditions
...
res.somevariable = variable1;
next();
...
////middleware2
...
some conditions
...
variable = req.somevariable;
...

Спасибо за ответ.


Это объект res.locals . Установка переменных непосредственно на объект запроса не поддерживается или не документируется. res.locals гарантированно сохраняет состояние в течение срока действия запроса.

res.locals

Объект, содержащий локальные переменные ответа, привязанные к запросу и, следовательно, доступные только для представлений, отображаемых в течение этого цикла запроса / ответа (если есть). В противном случае это свойство идентично app.locals.

Это свойство полезно для отображения информации на уровне запроса, такой как имя пути запроса, аутентифицированный пользователь, пользовательские настройки и т. Д.

app.use(function(req, res, next) {
    res.locals.user = req.user;  
    res.locals.authenticated = ! req.user.anonymous;
    next();
});

Чтобы получить переменную в следующем промежуточном программном обеспечении:

app.use(function(req, res, next) {
    if (res.locals.authenticated) {
        console.log(res.locals.user.id);
    }
    next();
});

Я не думаю, что лучшая практика будет передавать переменную, как req.YOUR_VAR вы можете рассмотреть req.YOUR_APP_NAME.YOUR_VAR или req.mw_params.YOUR_VAR

это поможет вам избежать перезаписывания других атрибутов







next