无法使用反馈本机中的fetch执行POST请求

时间:2017-06-28 20:16:31

标签: javascript json react-native fetch json-server

我正在尝试对节点中的json-server提供服务的json文件执行POST操作。尝试执行所述POST操作时,我收到以下500错误:

" TypeError:无法读取属性' id'未定义的     在Function.createId"

后期操作如下:

pushState = () => {
        var update = {
            "a": 1,
            "b": 2
        };

    return fetch(url, {
      mode: 'cors',
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
      },
      body: JSON.stringify(update)
    })
    .then((response) => {
      console.log(response);
      response.text();
    })
    .then((responseData) => {
      console.log("Response:",responseData);
    }).catch((error) => {
      console.log(error);
    })
    .done();
  }

我是否正确执行了POST请求?

修改:添加异步后等待我仍然遇到同样的错误:

pushState = async () => {
  var update = {
    "a": 1,
    "b": 2
  };

  var result = await fetch(url, {
    mode: 'cors',
    method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(update)
  })
  .then((response) => {
    console.log(response);
    return response;
  })
  .catch((error) => {
    console.log(error);
  });

  return result;
}

1 个答案:

答案 0 :(得分:2)

这里有两个问题:

  1. 您没有从fetch返回任何内容。
  2. fetch是异步的。现在通过pushState立即回复结果来调用它的方式,当您收到错误时,它几乎总会返回undefined。您需要使用async / await编写pushState
  3. 编辑以回答评论:

    由于您使用的是函数箭头语法,因此pushState异步将如下所示:

    pushState = async () => { /* code */ }
    

    为了帮助您了解fetch的工作原理,建议您阅读this first。然后要了解高级别的异步/等待,请阅读this article。生成的代码如下所示:

    pushState = async () => {
      var update = {
        "a": 1,
        "b": 2
      };
    
      var result = await fetch(...) // Remember to return something.
    
      return result;
    }