发布了whatwg-fetch工作但没有发布数据

时间:2018-04-13 02:32:43

标签: javascript node.js rest fetch

我遇到的问题与" whatwg-fetch"响应返回为200,但没有数据通过。

这是服务器上的代码......

app.post('/promo', function(request, response) {

  response.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
  var promo = new PromoItem();
  promo.imgUrl = request.body.imgUrl;
  promo.name = request.body.name;
  promo.description = request.body.description;
  promo.category = request.body.category;

  console.log('----------');
  console.log(promo.name);
  console.log(request.body.name);
  console.log('----------');
  promo.save(function(err, savedPromo) {
    if (err) {
      responde.status(500).send({
        error: "Something happened, promo not saved !"
      });
    } else {

      response.status(200).send("Success !");
    }
  });
});

promo.name request.body.name 都以未定义的方式返回。

客户端上的代码..

setPromo = () => {
  const options = {

    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
    method: "POST",

    mode: 'no-cors',

    body: JSON.stringify({
      "imgUrl": "http://via.placeholder.com/900x200",
      "name": "MI POST",
      "description": "MI PRIMER POST",
      "category": "Salud"
    })
  };
  fetch('http://localhost:3010/promo', options).then(function(response) {
    console.log('Status', response.status);
  })
}

使用不同的值操作选项,但结果仍然相同。

任何想法?

感谢

1 个答案:

答案 0 :(得分:0)

可能没有解析数据。在Express中,POST主体可以由body-parser解析。有一些用法示例on the Express website。从本质上讲,您可以使用body-parser这样的中间件:

var bodyParser = require('body-parser');
app.use(bodyParser.json());

它也可以在每个路线上使用:

app.post('/promo', bodyParser.json(), function(request, response) { //...

如果您使用的是Express> = 4.16.0版本,bodyParser.json可用express.json。 (source