来自Gatsby中单个对象JSON文件的GraphQL模式

时间:2018-05-16 11:50:53

标签: graphql-js gatsby

所以我想查询一个不是Gatsby的GraphQL数组的JSON文件,但我真的不知道怎么做。

据我所知gatsby-transformer-json个文档 - 它只支持加载数组,并可通过allFileNameJson架构访问它们。

我的gatsby-config插件(此问题只有必要的插件):

{
  resolve: 'gatsby-source-filesystem',
  options: {
    name: 'data',
    path: `${__dirname}/src/data`
  }
},
'gatsby-transformer-json'

然后让我们在src/data中说我有一个something.json文件,如下所示:

{
  "key": "value"
}

现在我想查询来自something.json文件的数据,但我无法查询somethingJson架构(尝试使用盖茨比的GraphiQL)。

有人可以指出我做错了什么或者我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

好的,只要他们有父(文件夹),就可以查询单个目标文件。

我们来看看这些参数:

  • gatsby-source-filesystem已配置为src/data
  • test.json文件位于src/data/test.json,其中包含{ "key": "value" }个内容

现在test.json文件实际上有一个父(data文件夹) - 您可以像这样查询test.json中的字段:

{
  dataJson {
    key
  }
}

但是将它们直接放在根文件夹中是一种不好的做法,因为当您存储另一个json文件时,即secondtest.json内容为{ "key2": "value2" },并将使用与上述相同的查询进行查询,您将仅从单个节点获取数据(不确定它是第一个还是最后一个遇到的节点),

因此,这种情况的完美解决方案是将单个对象的json文件存储在单独的文件夹中,每个文件夹只有一个json。

例如,您有一些“关于我”数据:

  1. about
  2. 中创建src/data文件夹
  3. 使用index.json
  4. 创建{ "name": "John" }文件
  5. 查询您的数据
  6. 像这样:

    {
      aboutJson {
        name
      }
    }
    

    就是这样。