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

ang*_*gry 5 graphql gatsby

我有:

- src
  - data
    - data.json
Run Code Online (Sandbox Code Playgroud)

data.json:

"gallery": [
    {"name":...
    {"name":.. ...
Run Code Online (Sandbox Code Playgroud)

gatsby-config.js包含:

`gatsby-transformer-json`,
{
  resolve: `gatsby-source-filesystem`,
  options: {
    path: `${__dirname}/src/data`,
    name: `data`,
  },
},
Run Code Online (Sandbox Code Playgroud)

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

export const IndexQuery = graphql`
  query IndexQuery {    
    mydata: file(name: { eq: "data" }, extension: { eq: "json" }) {
      allFile {
        gallery {
          name
        }
      }
    }
  }
`
Run Code Online (Sandbox Code Playgroud)

但这不起作用。

Fab*_*ltz 7

您的GraphQL查询需要一些调整。该gatsby-transformer-json负责所有的解决,所以你不需要操心gatsby-source-filesystem的查询中:

export const IndexQuery = graphql`
  query IndexQuery {
    dataJson {
      gallery {
        name
      }
    }
  }
`;
Run Code Online (Sandbox Code Playgroud)

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

this.props.data.dataJson.gallery
Run Code Online (Sandbox Code Playgroud)

要调试您的GraphQL查询,使用内置的GraphiQL很有帮助,后者应在http:// localhost:8000 / ___ graphql上运行