从运行在 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/json
,result.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 时不支持获取协议