来自 Gatsby 中单个对象 JSON 文件的 GraphQL 模式
Posted
技术标签:
【中文标题】来自 Gatsby 中单个对象 JSON 文件的 GraphQL 模式【英文标题】:GraphQL schema from a single object JSON file in Gatsby 【发布时间】:2018-10-26 11:13:27 【问题描述】:所以我想查询一个 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 进行了尝试)。
谁能指出我做错了什么或者我该如何解决这个问题?
【问题讨论】:
【参考方案1】:好的,这样就可以查询单对象文件,只要它们有父(文件夹)。
让我们获取这些参数:
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。
例如你有一些“关于我”的数据:
-
在您的
src/data
中创建一个about
文件夹
创建一个index.json
文件,即 "name": "John"
查询您的数据
像这样:
aboutJson
name
就是这样。
【讨论】:
以上是关于来自 Gatsby 中单个对象 JSON 文件的 GraphQL 模式的主要内容,如果未能解决你的问题,请参考以下文章
在 Gatsby 配置中,如何将元数据对象隔离到它自己的文件中,但仍然能够在 GraphQL 中使用它?