8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Relay Cursor Connectionsの仕様概略

Posted at

(なんかあった時に見れるように、見せれるようにメモとして残しています。間違ったことが書いてあったらすみません。指摘は大歓迎です)

Relay Cursor Connectionsの仕様概略

https://facebook.github.io/relay/graphql/connections.htm
仕様に沿ったコネクションタイプを定義することで、カーソルを使ったrelayサポートのページングができるようになる

Connectionタイプ

定義

  • 名前がConnectionで終わる
  • edges, pageInfoというフィールドを持つ

フィールド

  • edges
    • Edgeタイプのリストが返る
  • pageInfo
    • non-nullのPageInfoというオブジェクトが返る

Edgeタイプ

定義

  • Connectionタイプのedgesフィールドから返る
  • node, cursorというフィールドをもつ

フィールド

  • node
    • Scalar, Enum, Object, Interface, Union, もしくはNon‐Nullのカスタムタイプを返す
    • リスト型は返せない
  • cursor
    • StringかStringにシリアライズできるタイプを返す
    • 不明瞭な文字列が入る(例 Mg==)

引数

カーソルの後ろからデータをフェッチするとき

  • first ... フェッチするデータの数
  • after ... カーソル

カーソルの前からデータをフェッチするとき

  • last ... フェッチするデータの数
  • before ... カーソル

firstとlastを同時に含むのは非推奨(僕もまだ理由をしっかり理解していない)
https://facebook.github.io/relay/graphql/connections.htm#sec-Pagination-algorithm

PageInfoオブジェクト

定義

  • hasNextPage, hasPreviousPageというboolean型のフィールドを持つ

フィールド

  • hasNextPage

    • after, firstがクエリの引数としてセットされた場合hasNextPageを必ず持つ必要がある    
    • hasPreviousPageは持たなくても良い
  • hasPreviousPage

    • last, beforeがクエリの引数としてセットされた場合hasPreviousPageを必ず持つ必要がある
    • hasNextPageは持たなくても良い
8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?