Apollo Clientについて学ぼうと思い、0. Introduction - Apollo Basics - Apollo GraphQL Docsをやっていた。しかし、これをやる中でGraphQLのクエリ言語についてあまり分かってないことに気づいたので、Queries and Mutations | GraphQLを見て、クエリについて学習した。
Fragment、queryの命名、変数を使ってRDBのプレースホルダー的なことをする方法、ifの利用などが分かってよかった。以下メモ書き。
- Fragmentを用いてクエリの再利用ができる - 引数名を用いてFragmentに変数を引き継ぐこともできる
 
query HeroComparison($first: Int = 3) {
  leftComparison: hero(episode: EMPIRE) {
    ...comparisonFields
  }
  rightComparison: hero(episode: JEDI) {
    ...comparisonFields
  }
}
fragment comparisonFields on Character {
  name
  friendsConnection(first: $first) {
    totalCount
    edges {
      node {
        name
      }
    }
  }
} - queryなどには命名ができ、そうすることでサーバ上でログなどが取りやすくなる
query HeroNameAndFriends {
  hero {
    name
    friends {
      name
    }
  }
} - 動的に値を変えるために一部分を変数にしておいて、分割して変数だけ渡すこともできる - default valueもつけられる
 
query HeroNameAndFriends($episode: Episode) {
  hero(episode: $episode) {
    name
    friends {
      name
    }
  } 以下のようにvariablesを指定する
{
  "episode": "JEDI"
} - @include(if: Boolean)や@skip(if: Boolean)で、条件付きで取得するクエリも作れる
query Hero($episode: Episode, $withFriends: Boolean!) {
  hero(episode: $episode) {
    name
    friends @include(if: $withFriends) {
      name
    }
  }
} - 複数クエリを発行したとき、queryは並列実行されるが、mutationは直列実行される