0

我正在 NextJS NodeJS 和 Express 上构建我的 Web 应用程序,我在 localhost 3000 上运行两台服务器,用于 next 和 9000 用于 express。

我有一个带有两个输入字段的表单,我正在将带有 axios post 的状态发送到带有数据的 url,在服务器端我正在接收该请求并将接收到的相同数据作为响应发送回。

我从服务器收到带有数据的响应:成功和我在 config.data 中的数据

为什么我的数据在配置数据中,我怎样才能从这个 JSON 中取出它,以便我可以将它传递给一个变量。

至于从 config.data 中获取数据,我尝试了 for 循环,但它们要么将 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.

我相信这与服务器响应的原样有关,或者首先没有解析服务器接收到的数据,或者是由于承诺。

任何输入都会有帮助,谢谢

4

1 回答 1

1

res.config.data就是string先解析它JSON.parse(res.config.data),然后访问bankName.

你也必须body-parserexpress最后使用。所以post数据驻留在req.body你应该发回而不是整个reqIMO。

表达:

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))
  }
于 2019-10-06T13:07:37.507 回答