具有嵌套字段类型条件的 Apollo graphql 查询

Posted

技术标签:

【中文标题】具有嵌套字段类型条件的 Apollo graphql 查询【英文标题】:Apollo graphql queries with type condition on nested fields 【发布时间】:2019-01-17 18:50:52 【问题描述】:

我正在研究以下类型,其中“评论”的“内容”是联合类型:

type TextContent 
  text: String


type RichContent 
  participants: [String]
  startTime: String


union Content = TextContent | RichContent

type Comment 
  id: ID
  sender: String
  content: Content


type Review 
  id: ID
  title: String
  lastComment: Comment

在我的 Apollo 查询中,我尝试对 2 种内容类型使用条件片段:

query listOfReviews 
  reviews 
    ...reviewFields
  


fragment reviewFields on Review 
  id
  title
  lastComment 
    content 
      ... on TextContent 
        text
      
      ... on RichContent 
        participants
        startTime
      
    
  

我收到了一个运行时错误,其中 Apollo 似乎试图访问“未定义”的“参与者”字段,其中实际的内容对象是:


  __typename: "TextContent:,
  text: "abc"

看起来两种类型的并集内容合并在一起了。

我的问题是:是否允许在 Apollo 查询中的嵌套字段上使用类型条件?还是必须在查询返回的***类型上使用类型条件?如果允许,我应该如何修复我的类型/查询?

非常感谢!

【问题讨论】:

【参考方案1】:

@const86 帮助指出这是由于这个错误:https://github.com/apollographql/apollo-link-state/pull/258。

【讨论】:

以上是关于具有嵌套字段类型条件的 Apollo graphql 查询的主要内容,如果未能解决你的问题,请参考以下文章

Apollo GraphQL:用于查询返回不同类型对象的模式?

具有动态键的对象的 Apollo/GraphQL 字段类型

具有动态键的对象的 Apollo/GraphQL 字段类型

具有动态键的对象的 Apollo/GraphQL 字段类型

嵌套在类型中的 Apollo 服务器订阅

graphql:按嵌套字段排序