GraphQL クエリで、各フィールド名(あるいはフラグメント)の後ろに @include ディレクティブや @skip ディレクティブを配置すると、if 引数で指定した条件によってそのフィールドを取得するかどうかを制御できます。
fieldName @include(if: $someTest)
fieldName @skip(if: $someTest)
@include ディレクティブと @skip ディレクティブの違いは、if 引数の判定が逆転しているだけです。
@include(if: Boolean)ディレクティブif引数の値がtrueのときにのみフィールドを取得します
@skip(if: Boolean)ディレクティブif引数の値がfalseのときにのみフィールドを取得します
query QueryOrganization($org: String!, $details: Boolean = false) {
organization(login: $org) {
name
description
websiteUrl @include(if: $details) {
}
}{
"org": "graphql",
"details": true
}関連記事
- GraphQL クエリ仕様: フィールド名にエイリアスを付ける
- GraphQL スキーマ仕様: @deprecated ディレクティブで非推奨のフィールドを示す
- GraphQL スキーマ仕様: インタフェース型 (interface type) を定義する
- GraphQL スキーマ仕様: スキーマ定義の基本
- GraphQL スキーマ仕様: 型やフィールドに説明文 (description) を記述する
- Apollo Client の fetchMore を自動で呼び出して GitHub GraphQL の100件制限を乗り越える (useAutoFetchMore)
- Apollo CLI の codegen で GraphQL クエリレスポンスの TypeScript 型を自動生成する