Невозможно изменить / добавить запрос в промежуточном программном обеспечении - PullRequest
0 голосов
/ 31 января 2020

Я новичок в nodejs и машинописи, и я хочу добавить новый параметр в req.body скажем req.body.jwt_token.

Я использую промежуточное ПО для обновления модели данных запроса. Проблема в в том, что я могу получить доступ (console.log работает), новый ключ req.body.jwt_token просто работает в этой функции и недоступен (даже не существует), кроме этого.

Я хочу использовать req.body.jwt_token в некоторых контроллерах.

export function httpsProtocol(req: Request, res: Response, next: NextFunction) {
    try {
        if (req.headers.authorization != undefined) {
            let authorization = req.headers.authorization;
            let authorizationArr: string[] = authorization.split('Bearer')
            if (authorizationArr[1] != undefined) {
                let jwtToken = "Bearer " + authorizationArr[1].trim();
                req.headers.Authorization = jwtToken;
                req.body.jwt_token = authorizationArr[1].trim();
                console.log(req.body.jwt_token); //able to console this
            }

        }
    } catch (error) {
        return res.status(422).json({
            message: "something goes wrong",
            error: error
        });
    }
    next();
};

Пожалуйста, предложите решение для этой проблемы. Как я могу добиться этого в nodejs и машинописи. Я использую express в качестве основы

Спасибо

1 Ответ

1 голос
/ 31 января 2020

? Единственная причина, по которой вы не можете получить доступ к req.body.jwt_token в вашем контроллере, заключается в том, что перед установкой значения вы next().

??‍? Убедитесь, что добавьте ваше next() внутри if/else условие. Итак, вы можете скопировать этот код ниже ? и использовать его:

export function httpsProtocol(req: Request, res: Response, next: NextFunction) {
  try {
      if (req.headers.authorization != undefined) {
          let authorization = req.headers.authorization;
          let authorizationArr: string[] = authorization.split('Bearer')
          if (authorizationArr[1] != undefined) {
              let jwtToken = "Bearer " + authorizationArr[1].trim();
              req.headers.Authorization = jwtToken;
              req.body.jwt_token = authorizationArr[1].trim();
              console.log(req.body.jwt_token); //able to console this
              // your next here
              next();
          } else {
            next(); // next or do some stuff
          }
      } else {
          next(); // next or do some stuff
      }
  } catch (error) {
      return res.status(422).json({
          message: "something goes wrong",
          error: error
      });
  }
  // next(); your next here only make your req.body.jwt_token is undefined
};

Возможно, этот ответ поможет вам узнать причину: передача значения из промежуточного программного обеспечения в контроллер в restify с использованием req.data не работает?

Надеюсь, это поможет вам ?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...