Как мы можем различать директивы include и skip в graphql? - PullRequest
0 голосов
/ 25 октября 2018

Хотя обе директивы могут скрыть поле.Когда include равен false, он работает так же, как когда skip равен true, тогда что отличает их.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Согласно спецификации, нет никакой разницы - обе директивы могут быть использованы для предотвращения разрешения поля.Единственное отличие состоит в том, что если в поле существуют и skip, и include, логика skip будет оценена первой (т. Е. Если skip истинно, поле всегда будет опущено независимо от того,значение include).

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

Например, если у вас была такая схема:

type Query {
  pet: Pet
}

type Pet {
  # other fields
  numberLitterBoxes: Int
  numberDogHouses: Int
}

Наличие обеих директив позволяет вам уменьшить количество переменных, которые имеютбыть включенным в ваш запрос.Например, вы можете запросить:

query ExampleQuery ($isCat: Boolean) {
  pet {
    numberLitterBoxes @include(if: $isCat)
    numberDogHouses @skip(if: $isCat)
  }
}

Если у вас была только одна директива или другая, в приведенном выше запросе вам потребуется передать две переменные (isCat и isNotCat).

0 голосов
/ 25 октября 2018

Разница должна быть только в том случае, если вы применяете обе директивы одновременно.Пропуск должен иметь более высокий prio.

Код из обеих директив выглядит очень похоже

...