ホーム>source

fetch からbodyオブジェクトのデータを取得していません  サーバー側でリクエストします。 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();
});

FormData を使用してみました  および accept  ヘッダーにもプロパティがありますが、運はありません。

あなたの答え
  • 解決した方法 # 1

    body-parser をインストールする必要があります  着信要求ストリームの本体部分全体を抽出し、req.bodyで公開するモジュール。

    以前はExpressの一部でしたが、今は個別にインストールする必要があります。

    npm install body-parser --save

    ミドルウェアを次のように使用します。

    app.use(bodyParser.json())

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ javascript - 入力でJavaスクリプトによって値を読み取り専用に設定します