【问题标题】:Simple get request with node.js and express使用 node.js 和 express 简单地获取请求
【发布时间】:2023-03-12 21:28:01
【问题描述】:

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

我在客户中得到的唯一回复是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);
    }
  });
}

【问题讨论】:

  • 你使用的是什么版本/polyfill?

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


【解决方案1】:

我在这里做一些猜测,因为我不确定您当前使用的是什么风格的fetch,但我会根据fetch 的标准实现来尝试一下。

fetch 分辨率内的response 通常没有直接可读的.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());
      });
  };
}

【讨论】:

  • 我认为这证实了我的怀疑——看看他们在 isomorphic-fetch 的例子中是如何拥有return response.json(); 的。看看我的建议是否适合你。重要的部分是return res.json(),然后期待正文作为第二个.then() 中的承诺解决方案。
  • 非常感谢,它有效。我对所有这些技术都是新手,很难找到有关此类内容的信息。我使用样板来开始帮助,他们在那里使用了这些库。你有什么资料可以让我读到这个 ​​fetch 的东西吗?
  • @DanielStorch developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch 是一个很好的起点。
猜你喜欢
  • 2013-09-13
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
相关资源
最近更新 更多