反应-提取请求未在正文中发送内容

时间:2018-08-20 10:52:04

标签: node.js reactjs express fetch

我没有从服务器端的fetch请求中获取主体对象中的数据。我在SO上尝试了其他解决方案,但就我而言,到目前为止没有任何效果。我在后端使用Node Express,在前端使用React。

在组件中:

addCity = _ => {
    const { city } = this.state;
    fetch('http://localhost:3003/city_create', {
      method: "POST",
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        create_name: city.name,
        create_district: city.district,
        create_population: city.population
      })
    })
      .then(res => {
        console.log(res);
        this.getCities;
      })
      .catch(err => console.log(err))

  }

服务器路由:

router.post('/city_create', (req, res) => {
    console.log("Trying to create new city...")
    const { create_name, create_district, create_population } = req.body;
    //debugger
    const queryString = "INSERT INTO city (Name, District, Population, CountryCode) VALUES (?,?,?,'PAK')";

    getConnection().query(queryString, [create_name, create_district, create_population], (err, rows, fields) => {
        console.log(create_name, create_district, create_population);
        if (err) {
            console.log('A db error occurred:' + err);
            res.sendStatus(500);
            return;
            //throw err;
        }
        console.log("Inserted a new City with Id: ", rows.insertId);
    });

    res.end();
});

也尝试在标头中使用FormDataaccept属性,但没有运气。

1 个答案:

答案 0 :(得分:1)

您需要安装body-parser模块以提取传入请求流的整个正文部分并将其公开在req.body上。

这是Express的一部分,现在我们需要单独安装。

npm install body-parser --save

并将中间件用作:

app.use(bodyParser.json())