〜かもしれない、弱腰。
この記事に出てくるクエリは以下をベースにしている。
totalCountだけが必要な時のクエリ
次のようなクエリをベースに考える。
{ hero { name friends(first: 2) { totalCount edges { node { name } cursor } pageInfo { endCursor hasNextPage } } } }
もしtotalCountだけが必要な場合、引数のfirstはデフォルト値があると仮定すると次のように書ける。
{ hero { friends { totalCount } } }
違和感無いと感じていたが、edgesを返すための処理がどれくらい走るかはクライアント側は知らないため、丁寧に first: 0 を指定してクエリすると優しいね、みたいな話をした。
{ hero { friends(fitst: 0) { totalCount } } }
クライアント側はtotalCountだけクエリしたつもりだが、リゾルバの実装としてfitstのデフォルト値をもとにリスト形式のデータを取得しているかもしれない。
もちろん、リゾルバの実装を覗けばこのあたりの調整は柔軟にできる。せっかくスキーマの仕様に乗っかってやり取りできる仕組みがあるので、 クエリの引数で不要な場合は first:0 のように明示的に不要な旨を書くと良いかもしれない。
冗長な気もするが、不要である旨を伝えるために必要な記述という気持ちに落ち着いた。