提问者:小点点

无法从react axios post到express节点检索数据,尝试了所有我能找到的


我试图做一些非常简单的事情,这是我的代码:

// in react
async function postAxios_product(formData) {
// formdata is a string, for example "WWWWWWW", from clicking on an input
    try {
      const obj2post = {name:formData}
      console.log("post to api/product:" + JSON.stringify(obj2post))  // shows {"name":"WWWWWWW"} for example 
      await axios.post(`${server}/product`, obj2post,  {"Access-Control-Allow-Origin":"*"} ) 
      .then(set_products( [...get_products, obj2post])) // update react state
    }
    catch (e) {console.error('Error in postAxios_product' + e.message);} 
  }

// in express node 
app.post(`/product`, async (req, res) => {
    console.log("inside post product")
    console.log(req.data) // undefined
    console.log(req.body) // undefined
    console.log(req.request) // {}
    console.log(req.params) // {}
      let product = await Product.create(req.data);
      return res.status(201).send({  error: false,   product  })
    })

我在Axios post请求参数到后端的答案是未定义的,请参阅req.query,req.data等

我也试过:

const {data: json}  = await axios.post(`${server}/product`, obj2postStr,  {"Access-Control-Allow-Origin":"*"} )

正如Node receive post json from axios post中所建议的,但这也不起作用


共2个答案

匿名用户

尝试将cors和body-parser添加到express app,这有助于请求映射/解析

...

app.use(cors())

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

匿名用户

您可能需要在nodejs服务器上安装和使用BodyParser

首先在服务器文件夹上运行npm i body-parser

然后requirebody-parser到服务器文件中

const bodyParser = require("body-parser");

然后在初始化你的应用程序后添加这2行

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

这将使您能够通过访问req.body访问请求正文