Javascript 如何使用expressJS处理获取api formData提交

Javascript 如何使用expressJS处理获取api formData提交,javascript,express,fetch,Javascript,Express,Fetch,因此,我尝试将fetch api post请求和formData提交到使用expressJS制作的api中,但提交后返回undefined,但当我尝试使用postman时,它成功接收到数据。我想使用fetchapi在postman中复制这个场景,下面是我的代码 获取API submit.addEventListener('click', ()=> { let formData = new FormData(); let fname = document.querySele

因此,我尝试将fetch api post请求和formData提交到使用
expressJS
制作的api中,但提交后返回undefined,但当我尝试使用postman时,它成功接收到数据。我想使用fetchapi在postman中复制这个场景,下面是我的代码

获取API

submit.addEventListener('click', ()=> {

    let formData = new FormData();
    let fname = document.querySelector('#fname').value;
    let lname = document.querySelector('#lname').value;
    let email = document.querySelector('#email').value;
    let gender = document.querySelector('#gender').value;

    formData.append('fname', fname);
    formData.append('lname', lname);
    formData.append('email', email);
    formData.append('gender', gender);

    fetch('http://localhost:5000/api/members',  {

        method: 'POST',
        body: formData,
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
          }
      });


});
我的ExpressJSAPI代码

app.use(cors()); // installed cors just incase
app.use(express.json());
app.use(express.urlencoded({extended: true}));

 app.post('/api/members', (req, res)=> {
      var fname = req.body.fname;
      var lname = req.body.lname;
      var email = req.body.email;
      var gender = req.body.gender;

      console.log(req.body) // i added a consolelog to show body

      connection
      .query(`INSERT INTO userdata (first_name, last_name, email, gender)VALUES('${fname}','${lname}','${email}','${gender}')`,(err, rows, fields) => {
        if(err) throw err
        res.json({msg: `1 rows was inserted`});
      });
 });
我的邮递员设置是POST->BODY->x-www-form-urlencoded

编辑

我在express中包含了一个console.log(req.body)来显示它得到了什么以及下面的输出

[Object: null prototype] {
  '-----------------------------47133174525661\r\nContent-Disposition: form-data; name': '"fname"\r\n' +
    '\r\n' +
    'dau\r\n' +
    '-----------------------------47133174525661\r\n' +
    'Content-Disposition: form-data; name="lname"\r\n' +
    '\r\n' +
    'duiasd\r\n' +
    '-----------------------------47133174525661\r\n' +
    'Content-Disposition: form-data; name="email"\r\n' +
    '\r\n' +
    'test@email.com\r\n' +
    '-----------------------------47133174525661\r\n' +
    'Content-Disposition: form-data; name="gender"\r\n' +
    '\r\n' +
    'Female\r\n' +
    '-----------------------------47133174525661--\r\n'
}

也许您可以尝试以下代码:


您是否已在express应用程序中启用CORS?如果没有,您可以使用第三方软件包
npm i cors
app.use(cors())
Yes在express上启用了cors。它可以工作!谢谢,我只是不明白为什么如果application/x-www-form-urlencode必须使用application/json,再次感谢。