Мои отправленные данные с помощью axios возвращаются в конфигурации, а не данные - PullRequest
0 голосов
/ 06 октября 2019

Я создаю свое веб-приложение на NextJS NodeJS и Express, я использую два сервера на localhost 3000 для следующего и 9000 для экспресса.

У меня есть форма с двумя полями ввода, и я отправляю состояние с сообщением axios на URL с данными, на стороне сервера я получаю этот запрос и отправляю те же самые полученные данные в качестве ответа.

Я получаю ответ от сервера с данными: success и мои данные в config.data

Почему мои данные в данных конфигурации и как я могу получить их из этого JSON такЯ могу передать его в переменную.

Что касается получения данных из config.data, я пробовал циклы, но они либо выдвигают 56 элементов из 56 чисел в пустой массив, либо неничего не делать.

Сторона клиента:

state = {
  bank_name: '',
  account_number: ''
}

...

onSubmit = (e) => {
  e.preventDefault()

  axios.post('http://localhost:9000/api/bank', {
    bankName: this.state.bank_name,
    accNumber: this.state.account_number
   })
    .then(res => {
      console.log(res)
    }).catch(err => console.log(err))
  }

Сторона сервера:

router.post('/', (req, res) => {
    const {reqData} = req;
    res.send(reqData);
})

Журнал консоли со стороны клиента (console.log(res)):

{
  config: {
    url: "http://localhost:9000/api/bank",
    method: "post",
    data: '{"bankName":"some new bank","accNumber":"39276542934235"}'
  },
  data: "success",
  headers: "...",
  request: "...",
  status: 200,
  statusText: "OK",
  __proto__: Object
}
...

Когда я нацеливаюсь res.config.data.bankName, я получаю undefined.

Я считаю, что это связано с тем, что ответ серверакак есть, или нет синтаксического анализа, который сервер данных получает в первую очередь, или это происходит из-за обещаний.

Любой ввод будет bполезно, спасибо

1 Ответ

1 голос
/ 06 октября 2019

Это res.config.data равно string, поэтому сначала проанализируйте его JSON.parse(res.config.data), а затем получите доступ к bankName.

Также вы должны использовать body-parser на конце express. И, таким образом, post данные находятся в req.body, вы должны отправить их обратно не целиком req IMO.

Экспресс:

router.post('/', (req, res) => {
    const reqData = req.body;
    return res.send(reqData);
});

Axios: (возвращаемые данные должны быть в res.data)

  axios.post('http://localhost:9000/api/bank', {
    bankName: this.state.bank_name,
    accNumber: this.state.account_number
   })
    .then(res => {
      console.log(res.data);
    }).catch(err => console.log(err))
  }
...