Gatsby 中单个 JSON 对象的 GraphQL 查询

Posted

技术标签:

【中文标题】Gatsby 中单个 JSON 对象的 GraphQL 查询【英文标题】:GraphQL query for a single JSON object in Gatsby 【发布时间】:2019-07-29 11:48:15 【问题描述】:

我有使用 gatsby cli 创建的基本 Gatsby 应用程序,我正在尝试使用来自 @987654323 的 gatsby-transformer-jsongatsby-source-filesystem 插件检索静态 JSON 数据@组件。

我的最终目标是呈现由无头 CMS 生成的静态 JSON 数据。更新 JSON 应该会更新插件生成的 GraphQL 架构。

按照文档并使用this topic 中提供的提示,我设置了以下结构。

测试目的数据如下所示


  "name": "first",
  "age": 34,
  "test": "test1",
  "children": [
    
      "id":1,
      "child":"child1"
    ,
    
      "id":2,
      "child":"child2"
    
  ]

位置如下

 src/data/test/test.json

我的 GraphiQL 查询看起来像这样


  testJson 
    name
    age
    children 
      id
      child
    
  

此查询当前结果如下

 
      "data": 
        "testJson": 
          "name": "first",
          "age": 34,
          "test": "test1",
          "children": []
        
      
    

由于某种原因,我无法继续查询 children 嵌套数组中的数据。

"children": []

从 CMS 导出的数据包含很多嵌套数组,我目前无法访问。我得到的只是顶层空数组。

我是否在这里遗漏了一个基本概念,或者插件是否在努力从给定的 JSON 解析正确的 GraphQL 架构?

我已彻底阅读文档,但似乎找不到解决方案。

【问题讨论】:

【参考方案1】:

children 用于internally 在Nodes 之间创建层次结构。

只需将 children 重命名为其他名称即可:


    "name": "first",
    "age": 34,
    "test": "test1",
    "foos": [
      
        "id": 1,
        "child": "child1"
      ,
      
        "id": 2,
        "child": "child2"
      
    ]

现在运行相应的查询:


  testJson 
    name,
    foos 
      id,
      child
    
  

结果会如预期:


  "data": 
    "testJson": 
      "name": "first",
      "foos": [
        
          "id": 1,
          "child": "child1"
        ,
        
          "id": 2,
          "child": "child2"
        
      ]
    
  

【讨论】:

谢谢@mehamasum!有用! PS:没想到像样的命名会给我带来这么多问题。 :)

以上是关于Gatsby 中单个 JSON 对象的 GraphQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

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

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

React Gatsby Graph QL - 过滤站点地图的文章

如果在 Gatsby 中布尔键匹配 true,则从对象内的对象数组中获取项目 - Graphql

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

gatsby 和 graphql :过滤特定的单个图像