Запросы Apollo graphql с условием типа для вложенных полей

Я работаю над следующими типами, где «содержание» «Комментария» является типом объединения:

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 я пытался использовать условные фрагменты для двух типов контента:

query listOfReviews {
  reviews {
    ...reviewFields
  }
}

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

Я получил ошибку времени выполнения, когда Apollo, кажется, пытается получить доступ к полю «участники» со значением «undefined», где фактический объект содержимого:

{
  __typename: "TextContent:,
  text: "abc"
}

Похоже, что два типа объединенного содержимого объединены.

Мой вопрос: можно ли использовать условия типа для вложенных полей в запросах Apollo? Или условия типа должны использоваться для типов верхнего уровня, возвращаемых запросами? Если это разрешено, как мне исправить свои типы / запросы?

Большое спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
0
923
1

Ответы 1

@ const86 помогла указать, что это связано с этой ошибкой: https://github.com/apollographql/apollo-link-state/pull/258.

Другие вопросы по теме