req.body возвращает undefined при использовании body-parser - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь создать API, который получает запрос POST для создания пользователя, но я получаю неопределенные ошибки для всех моих req.body запросов. Мое приложение настроено так (упрощенно для краткости):

Пользовательский контроллер, который вызывается Express Router в моем файле пользовательских маршрутов

/ Контроллеры / user.js

userController.addUser = function(req, res) {
  let user = new User();

  user.username = req.body.username;
  user.first_name = req.body.first_name;
  user.last_name = req.body.last_name;
  user.email = req.body.email;
  user.type = req.body.user_type

  // This returns undefined as does all other req.body keys
  console.log("REQ.BODY.EMAIL IS: " + req.body.email);
} 

Файл маршрута пользователя:

/ route / user.js - требуется пользовательский контроллер выше

router.post('/user/create', userController.addUser);

Главное приложение: все маршруты и контроллеры работают в соответствии с моими тестами, кроме случаев, когда используется req.body. *

index.js - основной файл приложения

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use('/api', routes);

Я безуспешно просматривал документацию Express и многочисленные сообщения StackOverflow. Дайте мне знать, если вам нужны дополнительные разъяснения.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Иногда с изменением версии body-parser, кажется, не работает, в этом случае просто используйте следующее, это удалит зависимость от body-parser:

router.post('/user/create', (req, res, next) => {

    let body = [];

    req.on('error', (err) => {
      console.error(err);
    }).on('data', (chunk) => {
      // Data is present in chunks without body-parser
      body.push(chunk);
    }).on('end', () => {
      // Finally concat complete body and will get your input
      body = Buffer.concat(body).toString();
      console.log(body);

      // Set body in req so next function can use
      // body-parser is also doing something similar 
      req.body = body;

      next();
    });

}, userController.addUser);
0 голосов
/ 06 сентября 2018

Моя проблема заключалась в том, как я отправлял тело в конечную точку API. Я использовал данные формы вместо x-www-form-urlencoded с почтальоном. Ошибка пользователя

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