javascript - 无法从 API 正确获取数据

标签 javascript node.js reactjs

我目前正在为 future 的项目尝试 React,并试图让自己跟上它的速度。

请耐心等待,由于某些情况我已经两年没有编码了,所以我非常生疏。

无论如何,我需要让 React 正确获取一些有关所写任务的数据,但无论我尝试什么,它都不起作用。我有一个函数写为

  getDataFromDb = () => {
fetch("http://127.0.0.1:8080/api/getTask")
  .then(response => response.json())
  .then(data => this.setState({ tasks: data.tasks, isLoading: false }))
  .catch(error => this.setState({error, isLoading: false}));
};

现在我的输出在 JSX 文件中

<React.Fragment>
  <h1>Random User</h1>
  {error ? <p>{error.message}</p> : null}
  {!isLoading ? (
    tasks.map(task => {
      const { title, description } = task;
      return (
        <div key={title}>
          <p>Title: {title}</p>
          <p>Desc: {description}</p>
          <hr />
        </div>
      );
    })

  ) : (
    <h3>Loading...</h3>
  )}
</React.Fragment>

无论我尝试使用自己的数据库做什么,它只是不想与 React 一起使用。我尝试通过 Postman 调用 API,所有内容都可以顺利发送和接收,但 React 会发出错误“无法获取”。

在我的 server.js 中,我编写了以下 api 调用

router.get("/getTask", (req, res) => {
Task.find((err, task) => {
if (err) return res.json({ success: false, error: err });
return res.json({ success: true, task: task });
  });
});

我已经在互联网和堆栈上搜索了一些答案和示例,而且,最愚蠢的是,如果我使用外部 API(例如“https://hn.algolia.com/api/v1/search?query=redux”)或任何其他 API,老实说,那么它就可以正常工作。如果有什么区别的话,我使用 MongoDB 的 mLabs 沙箱。

有什么建议吗?在过去 5 个小时左右的时间里一直坚持这个问题。

最佳答案

您的提取请求似乎将发送至本地主机地址和端口。确保您的服务器上正确设置了 CORS,以允许来自同一地址和不同端口的传入连接。 Postman 通常适用于任何正确设置的服务器,无论 CORS 设置如何。我不确定 fetch,但使用 axios,如果您打印错误对象,它应该为您提供更多可供使用的信息。

此外,stever 的评论也是正确的,因为您没有使用此状态任务,因此未定义任务。

关于javascript - 无法从 API 正确获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55441817/

相关文章:

node.js - 如何才能将新创建的 .csv 文件下载给用户?

javascript - 以编程方式 react 设置组件 Prop

javascript - 如果我的键类型为数字,为什么 React 会提示我没有唯一的键?

javascript - JS Regex替换所有html标签

javascript - 如何按值对 Mongoose 填充的数组进行排序?

javascript - 使用jquery将输入字段附加到DOM时如何在输入字段上添加值

node.js - 如何模拟 irc 服务器断开连接来测试我的 nodejs irc 机器人?

reactjs - Redux 表单 - 多个更新功能呈现缓慢

javascript - "ReferenceError: Can' t 找到变量 : $j. 。”在 jasmine 中测试时

javascript - 在 D3.js 中更新和转换组内的各个 SVG 元素