如何通过 GraphQL 从 json 文件中获取数据?

Posted

技术标签:

【中文标题】如何通过 GraphQL 从 json 文件中获取数据?【英文标题】:How can I get data from a json-file via GraphQL? 【发布时间】:2018-08-21 11:45:33 【问题描述】:

我有:

- src
  - data
    - data.json

data.json:

"gallery": [
    "name":...
    "name":.. ...

gatsby-config.js 包含:

`gatsby-transformer-json`,

  resolve: `gatsby-source-filesystem`,
  options: 
    path: `$__dirname/src/data`,
    name: `data`,
  ,
,

如何通过 GraphQL 查询从此 json 文件中获取 gallery.names 的列表? 我正在尝试写:

export const IndexQuery = graphql`
  query IndexQuery     
    mydata: file(name:  eq: "data" , extension:  eq: "json" ) 
      allFile 
        gallery 
          name
        
      
    
  
`

但它不起作用。

【问题讨论】:

【参考方案1】:

您的 GraphQL 查询需要稍作调整。 gatsby-transformer-json 负责所有解析,因此您无需担心查询中的 gatsby-source-filesystem

export const IndexQuery = graphql`
  query IndexQuery 
    dataJson 
      gallery 
        name
      
    
  
`;

然后在页面/布局中使用它,例如:

this.props.data.dataJson.gallery

要调试您的 GraphQL 查询,使用内置的 GraphiQL 会很有帮助,它应该在 http://localhost:8000/___graphql 运行。

【讨论】:

const mydata = this.props.data.dataJson return ( mydata.gallery.forEach(value => alert(value.name)) )跨度> 执行console.log(this.props.data.dataJson) 并检查您收到的数据。 mydata 在查询中不存在。尝试 const gallery = this.props.data.dataJson 并循环遍历它。 我们应该写dataJson,因为文件名是data.json还是目录名? 是的,因为目录名。

以上是关于如何通过 GraphQL 从 json 文件中获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 GraphQL 获取 json

如何从 GraphQLSchema javascript 对象获取 .graphql 文件?

Python - 如何从 GraphQL api 获取 JSON?

如何从 GraphQL API 调用中获取 JSON 对象元素? [关闭]

如何在 TypeScript 中获取 GraphQL 架构

如何使用 GraphQL 从 VueJS/Gridsome 中的 JSON 文件中迭代数据?