ビュー・並び順・ページネーション
一覧は 2 種類でページングが異なり、ビューはフィルターとソートを持ち、カーソルは生成時の順序を運び、そしてすべてのフィールドを並び替えられるわけではありません。
ページング
一覧には 2 種類あり、ページングの方法が異なります。
ほとんどの一覧(商品、価格表、見積)は limit と after を取り、nextCursor を返します。次のページには nextCursor を after として渡し、null になったら終了します。nextCursor はそのページ最後の行の id です。
limit は 1 から 100 で、既定は 50。これはどちらの一覧でも同じです。
レコードの一覧はより多くを取ります。limit、dir、orderBy または view、relatedTo と via、そして cursor または after です。4 つの組み合わせは 400 で拒否され、これらはパラメータ一覧では表現できません。
viaにはrelatedToが必要orderByとviewは併用できないcursorにはorderByかviewのいずれかが必要afterはそのどちらとも併用できない。順序付きのクエリはcursorでページングする
カーソルはそれを生成した順序に属します。 順序 — ソート、方向、関連レコードのフィルター、ビュー — はカーソルの内部に入っています。ビューが変わった後にカーソルを再利用すると、正しそうに見えて実際は違うページを返すのではなく、cursor_ordering_mismatch で明示的に失敗します。順序が変わったら最初のページから取り直してください。
total は最初のページでのみ数えられます。 after も cursor もないリクエストは件数を返し、以降のページは total: null を返します。件数は毎ページではなく一度だけ支払われるため、表示したい場合は最初のページの値を保持してください。
ビューはフィルターとソートをまとめたもの
ビューは条件、その結合方法、そしてソートを持ちます。条件は最大 10 件、ソートは最大 2 件です。match は all か any で既定は all なので、指定しないビューは広げるのではなく絞り込みます。
条件はフィールド、演算子、そして演算子によっては値を指定します。演算子は 4 系統に 33 個あり、系統が条件の形を決めます。
| 系統 | 個数 | 値 | 例 |
|---|---|---|---|
| 単項 | 15 | 取らない | isEmpty、isTrue、isToday、isThisMonth、isPast |
| 値 | 13 | ちょうど 1 つ | contains、is、gt、before、onOrAfter、has |
| リスト | 4 | 集合 | isAnyOf、isNoneOf、hasAnyOf、hasNoneOf |
| 範囲 | 1 | 上下の境界 | isBetween |
演算子は API ではなくフィールドの種類に属します。 テキストフィールドはテキスト系、数値フィールドは数値系を取り、その集合はほとんど重なりません。
| フィールドの種類 | 受け付ける演算子 |
|---|---|
text、longtext、email、url、phone、user、レコードの name |
テキスト系 — contains、is、集合判定、空判定 |
decimal、currency、percent、formula |
数値系 |
date、datetime、updated_at |
日付系。上記の相対演算子を含みます |
select |
選択系 |
multi_select |
has、hasAnyOf、hasNoneOf、isEmpty、isNotEmpty |
relation |
has、isEmpty、isNotEmpty |
boolean |
isTrue、isFalse、isEmpty |
address |
contains、isEmpty、isNotEmpty |
rollup、days_since |
なし — フィルター対象の列を持ちません |
この表の外の組み合わせは無視されるのではなく filter_unsupported_for_field で拒否されます。ユーザー入力から条件を組み立てる前にフィールドの種類を読んでください。
すべてのフィールドを並び替えられるわけではない
並び替えにはデータベースが生成できる全順序と、カーソルが運べる単一の値が必要です。5 つの種類はそのどちらも持ちません。
relation、multi_select、addressは並び替えの基準になる単一の値を持ちません。rollupとdays_sinceは列そのものがなく、クライアントが計算します。
それ以外は並び替えできます。この 5 つを orderBy に指定すると order_field_unsupported で拒否されます。カーソルに現れられないのも同じ理由です。