如何在 graphQL 片段中定义可选字段以进行查询

Posted

技术标签:

【中文标题】如何在 graphQL 片段中定义可选字段以进行查询【英文标题】:How to define an optional field in graphQL fragment for query 【发布时间】:2020-07-05 05:20:42 【问题描述】:

用于该查询的数据库包含一个文件夹中的一组 YAML 文件。

使用 GatsbyJS 收集这些文件,并可通过 graphQL 请求获得。

并非所有源文件都定义了 label 字段。

是否可以在丢失时为该字段返回默认值或空值?

其实我得到以下错误:

无法查询类型“EngagementsYamlTo”上的字段“标签”。

这是我的查询:


  stable: allEngagementsYaml(filter: stable: eq: true, to: ) 
    edges 
      ...engagementNode
    
  
  unstable: allEngagementsYaml(filter: stable: eq: false) 
    edges 
      ...engagementNode
    
  


fragment engagementNode on EngagementsYamlEdge 
  node 
    heading
    description
    iconClass
    stable
    to 
      href
      label
    
  

【问题讨论】:

【参考方案1】:

嗯……这不是查询的问题。

没有源文件有标签字段,因此该架构从未被触及。至少有 1 个带有标签字段的文件将返回有效响应。

澄清了这种情况!

【讨论】:

我可能没有在这里使用“解决”这个词。下一个问题就是如果没有条目具有该字段,如何防止错误? @cook88 是的,你可能是对的,改变了它。

以上是关于如何在 graphQL 片段中定义可选字段以进行查询的主要内容,如果未能解决你的问题,请参考以下文章

能够使用相同的字段扩展所有 Apollo/GraphQL 突变。通缉“通用片段”

无法通过 Prisma 在 GraphQL-yoga 中使用片段

在 GraphQL 中重用输入类型作为片段 [重复]

如何重用graphql查询中的字段

如何使用GraphQL在MERN应用程序的MongoDB模式中插入数组字段?

如何为 GraphQLObjectType 的 GraphQLList 定义 Relay 片段?