【问题标题】:GraphQL schema from a single object JSON file in Gatsby来自 Gatsby 中单个对象 JSON 文件的 GraphQL 模式
【发布时间】: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 进行了尝试)。

谁能指出我做错了什么或者我该如何解决这个问题?

【问题讨论】:

    标签: graphql-js gatsby


    【解决方案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。

    例如你有一些“关于我”的数据:

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

    像这样:

    {
      aboutJson {
        name
      }
    }
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 2019-07-29
      • 1970-01-01
      • 2019-05-18
      • 1970-01-01
      • 2023-04-08
      • 2016-06-16
      • 2019-10-20
      • 2023-03-06
      • 1970-01-01
      相关资源
      最近更新 更多