Запросить все фрагменты типа - PullRequest
0 голосов
/ 02 апреля 2020

Есть ли способ сделать запрос для всех типов поля.

Пример

{
  allPosts {
    ... on PostType {
      title
    }
    ... on Post2Type {
      title
    }
  }
}

Будет гораздо больше, чем два типа PostTy, так что я хотел бы получить это. AllPostTypes - это все объединенные PostTypes.

{
  allPosts {
    ... on AllPostTypes {
      title
    }
  }
}

Возможно ли это вообще? Спасибо!

1 Ответ

0 голосов
/ 02 апреля 2020

Да, при условии, что ваша схема выглядит следующим образом:

type Query {
  allPosts: [AllPostTypes!]!
}

interface AllPostTypes {
  title: String!
}

Интерфейс определяет одно или несколько полей, которые должны определять типы реализации. Таким образом, тип, реализующий AllPostTypes, также должен был бы определить поле title. Если у вас есть поле, которое возвращает AllPostTypes, мы можем использовать AllPostTypes в качестве условия on для запроса любых таких общих полей:

{
  allPosts {
    ... on AllPostTypes {
      title
    }
  }
}

Однако распространение фрагмента здесь не требуется. Поскольку эти поля являются общими для любого объекта, возвращаемого allPosts, мы можем просто написать:

{
  allPosts {
    title
  }
}

Любые поля, которые указывают c на определенный тип реализации, все равно необходимо добавить с использованием фрагмента. Распространение, хотя:

{
  allPosts {
    title
    ... on Post2Type {
      someOtherField
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...