Dynamoidでページネーションを実現する
DynamoDBのRubyアプリケーション用のORMであるDynamoidを用いて、ページネーションを実現する方法を紹介します
実現したいコト
- レコードを数件取得する
- その続きのレコードをさらに数件取得する
- 2を繰り返す
レコード取得部分の実装
Userテーブルからレコードを10件取得する
records, metadata = User.record_limit(10).start(nil).find_by_pages.first
続きのレコードをさらに10件取得する
records, metadata = User.record_limit(10).start(metadata[:last_evaluated_key]).find_by_pages.first
records
- 取得したレコードの内容が格納される
metadata
- 取得できるレコードに続きがある際に
last_evaluated_key
パラメータが追加される -
start
にlast_evaluated_key
を指定することで、続きのレコードを取得できる
where句を使う場合
実際に使う際は検索条件などを加えたい場合が多いと思う
Userテーブルからレコードを10件取得する
records, metadata = User.record_limit(10).where(条件).start(nil).find_by_pages.first
続きのレコードをさらに10件取得する
records, metadata = User.record_limit(10).where(条件).start(metadata[:last_evaluated_key]).find_by_pages.first
より詳しい内容はDynamoid GitHubをご確認ください