来自 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 模式的主要内容,如果未能解决你的问题,请参考以下文章

单个 GraphQL 查询中的多个源 (Gatsby)

来自 json 的 Gatsby 图像路径

在 Gatsby 配置中,如何将元数据对象隔离到它自己的文件中,但仍然能够在 GraphQL 中使用它?

Gatsby:如何将多个上下文 ID 传递给单个查询?

在 Gatsby 中使用 graphQL 查询多个 JSON 文件

如何从 JSON 文件在 Gatsby 中创建页面?