req.body.something возвращает неопределенное значение - PullRequest
0 голосов
/ 15 февраля 2019

Я пытался отправить данные на мой экспресс-сервер с помощью axios, и когда я console.log (req.body.something), он возвращает неопределенное значение, а когда я console.log (req.body), только он регистрирует это сообщениена консоль: [Object: null prototype] {'{"nameVal": "Usef", "nickNameVal": "US"}': ''} Любая помощь будет оценена.

// This My Server.js Code
const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const app = express();

app.use(bodyParser.json());
// create application/x-www-form-urlencoded parser
const urlencodedparser = bodyParser.urlencoded({ extended: false });

// Use Cors As MiddleWhere
app.use(cors());

// Get The Post Request
app.post("/user", urlencodedparser, (req, res) => {
  console.log(req.body.name); // returns undefined
});

app.listen(5000);

// and this the react component state along with the axios post request

  state = {
    nameVal: "Usef",
    nickNameVal: "US"
  };

 handleSubmit = event => {
    event.preventDefault();
    const { nameVal, nickNameVal } = this.state;
    axios.post("http://localhost:5000/user", { nameVal, nickNameVal },
    { headers: { "Content-Type": "application/x-www-form-urlencoded" } }
  ).then(res => {console.log(res)});

};

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Согласно документации axios вам нужно передать экземпляр URLSearchParams (или строку запроса параметров) в качестве второго аргумента.

const params = new URLSearchParams();
params.append('nameVal', state.nameVal);
params.append('nickNameVal', state.nickNameVal);
axios.post('/user', params);
0 голосов
/ 15 февраля 2019

Если вы удалите свой пользовательский заголовок Content-Type из запроса axios, axios по умолчанию отправит ваши данные в формате JSON, и они будут проанализированы вашим промежуточным программным обеспечением экспресс-анализа JSON.

axios.post("http://localhost:5000/user", { nameVal, nickNameVal })
  .then(res => console.log(res));

Данныевы отправляете на сервер nameVal и nickNameVal, поэтому попытка доступа к req.body.name все равно даст undefined.Попробуйте войти в систему nameVal и nickNameVal.

app.post("/user", (req, res) => {
  console.log(req.body.nameVal, req.body.nickNameVal);
});
...