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

时间:2018-08-10 07:55:43

标签: graphql apollo

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

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 个答案:

答案 0 :(得分:0)

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