首页 > 解决方案 > Fetch() 数据未显示在服务器端

问题描述

我正在向我的服务器发送一个简单的 fetch(),如下所示:

eo.put = function (state) {
  
  console.log('PUT:state', state);

  let _id = encodeURIComponent(state._id);
  const options = { 
    headers: {'Content-Type': 'application/json'}, 
    method: 'PUT', 
    body: JSON.stringify(state)
  };
  fetch("/articles/put/" + _id, options )
    .then((response) => {
      console.log('RESPONSE', response);
      // you need to update the DOM here
    })
    .catch((error) => {
      console.error("DEBUG: fetch/PUT error", error);
    });
}

我可以验证状态是否填充了 console.log()。

然而; 在服务器端 req.body 未填充并显示未定义。

// .. snip
app.use('/articles', routes.articles);
// .. snip

// UPDATE OPERATIONS
router.route('/put/:_id').put((req, res) => {
  const _id = req.params._id;
  const obj = req.body;
  

      /*
      **
      ** req.body is empty
      **
      */
      debug && console.log('DEBUG: route: /articles/put : req.body', req.body);
    
      DBM.updateArticle(_id, obj).then(() => {
      }).catch((err)=>{
        res.status(500).send("DEBUG: database internal error", err);
      });
      res.end();
    });

标签: javascriptreactjsexpress

解决方案


很可能您需要添加一个正文解析器

const bodyParser = require('body-parser')

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

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

// your routes...

推荐阅读