Что означает 3 точки/периоды/эллипсис в запросе relay/graphql?

relay docs содержит этот фрагмент:

query RebelsRefetchQuery {
  node(id: "RmFjdGlvbjox") {
    id
    ... on Faction {
      name
    }
  }
}

Что означает этот синтаксис ... on Faction?

Ответ 1

Существует два вида использования ..., связанных с фрагментами.

Включение фрагмента по ссылке

query Foo {
  user(id: 4) {
    ...userFields
  }
}

fragment userFields on User {
  name
}

Имеет ли смысл составлять поля из фрагмента в запрос внедрения:

query Foo {
  user(id: 4) {
    name
  }
}

Обратите внимание, что фрагменты могут составлять другие фрагменты.

Встроенные фрагменты

Они могут использоваться для создания полей в зависимости от типа. Например:

query Foo {
  profile(id: $id) {
    url
    ... on User {
      homeAddress
    }
    ... on Business {
      address
    }
  }
}

В этом примере сервер определит, следует ли возвращать поле homeAddress или address во время выполнения на основе того, является ли запрошенный объект User или Business.

Ответ 2

Ах. Он объяснил здесь:

Фрагменты потребляются с помощью оператора спреда (...). Все поля выбранный фрагментом, будет добавлен к выбору поля запроса в на том же уровне, что и вызов фрагмента. Это происходит через множественные уровни распространения фрагментов.