从运行在 node.js 上的 json 获取数据

Posted

技术标签:

【中文标题】从运行在 node.js 上的 json 获取数据【英文标题】:fetch data from json running on node.js 【发布时间】:2019-05-02 06:21:13 【问题描述】:

我想从我的 localhost 上的 JSON 对象中获取数据。 ..这可能是一个非常愚蠢的问题,但我是 JS 的初学者。

还有其他获取数据的方法吗??

  fetch('http://localhost:3000/show')
     .then(result => 
          console.log(result);
          return result.json();
      );
      .then(data => 
         console.log(data);
      );
      .catch(error => 
          console.log(error);
      );

这个 http://localhost:3000/show 包含 json 对象。 它已从 mongoose 检索数据。

【问题讨论】:

您是在问如何显示为表格?如果是这样,您尝试过什么? @openwonk 我无法获取数据,一旦我能够获取数据,我就会去做。 你的问题能说得更清楚点吗?您试图从哪里获取 JSON 对象? “localhost:3000”上正在运行什么?当您从浏览器点击端点“/show”时返回什么? @Sreehari 登录页面正在我的 localhost:3000 上运行。 JSON 对象正在从端点 /show 返回。 【参考方案1】:

删除每个.then 调用之间的分号。

Promises 使用一种“单子”模式:Promise 上的每个方法都返回另一个 Promise,它具有相同的 API。这意味着您可以无限期地链接 promise 方法。

所以:

fetch()
.then(/* stuff */)
.then(/* more stuff */)
.catch(/* even more stuff */); // <-- this is the only semicolon

很多 Array 方法也是如此,所以你会经常看到这样的代码:

Object.keys( someObj )            // returns an array
.map(/* iterator function */)     // Array.map returns an array
.filter(/* iterator function */)  // Array.filter returns an array
.sort(/* comparator function */); // Array.sort returns an array

同样,只需要一个分号,因为语句的每一步都会产生一个数组,而 JS 让您可以预料到这一点。


如果这没有帮助,您可能需要发布您遇到的错误。

我应该补充一点,如果 http://localhost:3000/show 的服务器无法提供 HTTP 标头 Content-Type: application/jsonresult.json() 将抛出。即使响应正文是完全有效的 JSON,如果服务器没有声明内容是 json,HTTPResponse 类也会拒绝执行.json()

此外,如果此代码在浏览器中运行,并且由不同的主机(或端口)提供服务,您将需要执行 CORS 操作。请参阅https://***.com/a/48287868/814463 以获得可能的帮助。

【讨论】:

删除分号后,我在 catch 块中出现拼写错误,您介意更改代码并发布吗?? 删除每个分号。他们都是。然后它应该工作。如果它仍然没有,你有一个不同的问题。我的猜测是您的本地服务器没有返回正确的Content-Type HTTP 标头,尽管我不能确定您是否没有说出您遇到的错误。 TypeError: 无法获取 => 这是控制台显示的内容。无论如何谢谢你的人 我没有安装名为 cors 的软件包。安装后,我可以获取数据。【参考方案2】:

如果您的端点 '/show' 返回 json 数据没有任何问题,那么下面的代码应该会安慰您的 json 响应。

fetch('http://localhost:3000/show')
.then(res => 
     console.log(result);
     return res.json()
)
.then(json => console.log(json))
.catch(err => console.log(err));

【讨论】:

以上是关于从运行在 node.js 上的 json 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

在 Node.js 中,模块如何从应用程序的 package.json 中获取数据?

如何从 Spotify Search API 获取数据并将其解析为 JSON? [在 node.js 中

在静态 json 文件上的 Node js 上使用 getJSON 时不支持获取协议

从 mongodb 服务器上的数据创建 d3.js 图

使用 jQuery - JSONP 从托管在 Vagrant VM 上的第三方 Node.js 服务器获取数据

Node.js:从 JSON 响应中提取数据