GraphQL PageInfoの謎

いつもお世話になってます。

現在 GraphQL の searchWorks でページ処理を試みているのですが、
PageInfo の hasNextPage と hasPreviousPage の結果が期待したものではないようなのです。

以下、試してみたクエリと実行結果になります。
お手数をおかけしますが、どうぞよろしくお願いいたします。

◆クエリ1
作品タイトルを"コナン"で絞り込んで、リリース時期の降順で並べ替え、
先頭の3件を1ページ目として取得するためクエリを実行します。

query {
searchWorks(titles: ["コナン"], orderBy: {field: SEASON, direction: DESC}, first: 3) {
nodes { annictId }
pageInfo { startCursor endCursor hasPreviousPage hasNextPage }
}}

=クエリ1の結果
1ページ目の作品の取得ができました。
hasNextPage が true なので2ページ目が存在しています。

{"data":{
"searchWorks":{
"nodes":[{"annictId":3072},{"annictId":6390},{"annictId":5613}],
"pageInfo":{"startCursor":"MQ","endCursor":"Mw","hasPreviousPage":false,"hasNextPage":true}
}}}

◆クエリ2
2ページ目を取得するため after にクエリ1の endCursor の値を指定、
after 以降の先頭3件が欲しいので first に取得件数を指定して、
クエリ1と同様の絞り込み条件と並び順でクエリを実行します。

query {
searchWorks(titles: ["コナン"], orderBy: {field: SEASON, direction: DESC}, after: "Mw", first: 3) {
nodes { annictId }
pageInfo { startCursor endCursor hasPreviousPage hasNextPage }
}}

=クエリ2の結果
2ページ目の作品の取得ができました。
ただ、1ページ目が存在するはずなのに hasPreviousPage が false となってしまいました。

{"data":{
"searchWorks":{
"nodes":[{"annictId":5067},{"annictId":5063},{"annictId":4814}],
"pageInfo":{"startCursor":"NA","endCursor":"Ng","hasPreviousPage":false,"hasNextPage":true}
}}}

◆クエリ3
1ページ目に戻ることを想定して before にクエリ2の startCursor の値を、
before 以前の後ろから3件が欲しいので last に取得件数を指定して、
クエリ1と同様の絞り込み条件と並び順でクエリを実行します。

query {
searchWorks(titles: ["コナン"], orderBy: {field: SEASON, direction: DESC}, before: "NA", last: 3) {
nodes { annictId }
pageInfo { startCursor endCursor hasPreviousPage hasNextPage }
}}

=クエリ3の結果
1ページ目の作品の取得ができました。
今度は2ページ目が存在するはずなのに hasNextPage が false となってしまいました。

{"data":{
"searchWorks":{
"nodes":[{"annictId":3072},{"annictId":6390},{"annictId":5613}],
"pageInfo":{"startCursor":"MQ","endCursor":"Mw","hasPreviousPage":false,"hasNextPage":false}
}}}

コメントはありません
Loading...