Что означают 3 точки/точки/многоточия в запросе relay/graphql?

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

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

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

2 ответов


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

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

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.


Ах. Это объясняется здесь:

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