使用node.js和express简单获取请求

时间:2016-02-08 22:36:41

标签: node.js express reactjs fetch fetch-api

我已经尝试了一切,无法弄清楚我做错了什么。我将数据从客户端发布到服务器没有问题,但反过来我无法让它工作。

我在客户端获得的唯一回复是ReadableByteStream {}

这是我在客户端的代码:

export function getAllQuestionnairesAction(){
  return (dispatch, getState) => {

    dispatch(getAllQuestionnairesRequest());

    return fetch(API_ENDPOINT_QUESTIONNAIRE)
      .then(res => {
        if (res.ok) {
          console.log(res.body)
          return dispatch(getAllQuestionnairesSuccess(res.body));
        } else {
          throw new Error("Oops! Something went wrong");
        }
      })
      .catch(ex => {
        return dispatch(getAllQuestionnairesFailure());
      });
  };
}

这是我在服务器上的代码:

exports.all = function(req, res) {
  var allQuestionnaires = [];

  Questionnaire.find({}).exec(function(err, questionnaires) {

    if(!err) {
      console.log(questionnaires)
      res.setHeader('Content-Type', 'application/json');
      res.send(JSON.stringify({ a: 1 }));
      //res.json(questionnaires)
    }else {
      console.log('Error in first query');
      res.status(400).send(err);
    }
  });
}

1 个答案:

答案 0 :(得分:2)

我在这里做了一些猜测,因为我不确定你目前使用的fetch有什么样的味道,但我会根据标准实施情况对它进行一次尝试。 fetch

response分辨率内的fetch通常没有直接可读.body。有关一些简单的示例,请参阅here

试试这个:

export function getAllQuestionnairesAction(){
  return (dispatch, getState) => {

    dispatch(getAllQuestionnairesRequest());

    return fetch(API_ENDPOINT_QUESTIONNAIRE)
      .then(res => {
        if (res.ok) {
          return res.json();
        } else {
          throw new Error("Oops! Something went wrong");
        }
      })
      .then(json => {
        console.log(json); // response body here
        return dispatch(getAllQuestionnairesSuccess(json));
      })
      .catch(ex => {
        return dispatch(getAllQuestionnairesFailure());
      });
  };
}