How can I get data from a json via GraphQL?(如何通过GraphQL从JSON获取数据?)
本文介绍了如何通过GraphQL从JSON获取数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
enter code here {
"compdata": [
{
"id": 1,
"title": "FlexBox",
},
{
"id": 2,
"title": "Grid layout",
},
] )
enter code here **file in:-- src-data-data.json**
enter code here export const IndexQuery = graphql`
query IndexQuery {
dataJson {
compdata {
id
example
}
} } `
BLOCKQUOTE出现错误,无法读取未定义的属性(正在读取‘Compdata’)
推荐答案
您只需按照docs about Sourcing from JSON。
也就是说,从JSON本地文件采购时不需要使用GraphQL,只需导入对象即可,如下所示:
import React from "react"
import JSONData from "../../content/My-JSON-Content.json"
const SomePage = () => (
<div style={{ maxWidth: `960px`, margin: `1.45rem` }}>
<ul>
{JSONData.compdata.map((data, index) => {
return <li key={`content_item_${index}`}>{data.title}</li>
})}
</ul>
</div>
)
export default SomePage
在这种情况下,您可以将JSON数据作为JSONData
导入,并通过compdata
的数组进行循环。
但是,如果您仍然想要使用GraphQL,您将需要使用gatsby-transformer-json
插件,该插件将从您的JSON源代码创建可查询的GraphQL节点:
安装方式:
npm install gatsby-transformer-json
并使用它gatsby-config.js
:
module.exports = {
plugins: [
`gatsby-transformer-json`,
{
resolve: `gatsby-source-filesystem`,
options: {
path: `./src/your/json/folder`,
},
},
],
}
节点的别名将取决于您的文件夹结构和您的命名(未提供),在文档示例中,给出了letters.json
,例如:
[{ "value": "a" }, { "value": "b" }, { "value": "c" }]
因此,在您的GraphiQL操场(localhost:8000/___graphql
)中,您将能够
要查询allLettersJson
节点:
{
allLettersJson {
edges {
node {
value
}
}
}
}
您可以添加typeName
选项来修复您的命名,例如:
{
resolve: `gatsby-transformer-json`,
options: {
typeName: `Json`,
},
},
在这种情况下,创建的节点将为allJson
。
这篇关于如何通过GraphQL从JSON获取数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何通过GraphQL从JSON获取数据?


猜你喜欢
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Flexslider 箭头未正确显示 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07