Apollo Clientについて学ぼうと思い、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は直列実行される