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

GraphQL schema from a single object JSON file in Gatsby

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

据我了解 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 我可以查询的模式(尝试使用 Gatsby 的 GraphiQL)。

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

好的,所以只要有父(文件夹)就可以查询单对象文件。

让我们采用这些参数:

  • 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。

例如你有一些"About Me"数据:

  1. 在您的 src/data
  2. 中创建一个 about 文件夹
  3. 创建一个 index.json 文件,即 { "name": "John" }
  4. 查询您的数据

像这样:

{
  aboutJson {
    name
  }
}

就是这样。