Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SequelizeのPaginationで苦労した話
Search
KSK
June 26, 2018
Programming
2
610
SequelizeのPaginationで苦労した話
KSK
June 26, 2018
Tweet
Share
More Decks by KSK
See All by KSK
Supernova Studio 使いはじめてみたら割と良さそう / supernova_studio
ksk1030m
1
690
CSV出力 - Viewからやるか? 他からやるか? / How to output CSV
ksk1030m
1
450
4画面出力とレシート印刷で作る体験型デジタルサイネージ / Unity signage
ksk1030m
1
2.7k
実録リファラル採用-僕と副社長の1827日- / my referral
ksk1030m
0
1k
GitLabを仕事で使っていた私が思うことをつらつらと / about GitLab
ksk1030m
1
810
エンジニア目線で考えるPR戦略 / PR by Engineer
ksk1030m
1
1.2k
Metabase ライブ環境構築 / metabase_live_coding
ksk1030m
0
270
昔の自分に伝えたい容量回復のためのDockerの仕組み / docker_tips
ksk1030m
1
420
Capistranoの罠と他人がハマった事例を見て思うこと / capistrano-trap
ksk1030m
0
260
Other Decks in Programming
See All in Programming
Creating Retro-Style Photos Using Swift
ski
1
340
Ruby製社内ツールのGo移行
bgpat
2
260
Some Quick Ideas To Improve Your Tests ( #jassttokyo )
teyamagu
PRO
2
2.3k
Swiftの型推論を学ぼう | Let's Learn About Type Inference in Swift
omochi
2
510
Data Contracts In Practice With Debezium and Apache Flink (Kafka Summit London)
gunnarmorling
2
270
GitHub Copilot Tips and Tricks
yuichielectric
26
7.4k
品質が高いコードって何?Rev2.1
ickx
1
490
document.write再考
brn
5
2.5k
自作ソフト(VMagicMirror)がVRMA対応してる話+実装のTips
bakudreameater
0
110
WasmOS: Wasmを実行する自作Microkernel
riru
0
370
incrementalモデルの理解を深める
ikkimiyazaki
2
640
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
480
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
18
1.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
319
20k
Statistics for Hackers
jakevdp
789
220k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.8k
No one is an island. Learnings from fostering a developers community.
thoeni
14
2k
Art, The Web, and Tiny UX
lynnandtonic
288
19k
WebSockets: Embracing the real-time Web
robhawkes
59
6.9k
Mobile First: as difficult as doing things right
swwweet
215
8.5k
The Art of Programming - Codeland 2020
erikaheidi
40
12k
What's new in Ruby 2.0
geeforr
335
31k
Building Adaptive Systems
keathley
29
1.8k
How to Ace a Technical Interview
jacobian
272
22k
Transcript
Sequelizeͷ PaginationͰ ۤ࿑ͨ͠ kskn / 2018.06.28 @Roppongi.js #4
ࣗݾհ ɾKeisuke Nakatane (@kskn) ɾORSO Inc. ৽نࣄۀ։ൃࣨ ɾαʔόɿΞϓϦɿϑϩϯτ ʹɹ̓ɹɿɹ̍ɹɿɹ̎ɹɹ͘Β͍ ɾલ৬ژͷήʔϜͰਓࣄ
ߏͬ͘͟Γ͜Μͳײ͡ ʢཧπʔϧʣ ʢΞϓϦʣ ʢAPIαʔόʣ
What’s Sequelizeʁ
None
Sequelize ɾNode.js ༻ͷOR Mapper ɹ- http://docs.sequelizejs.com/ ɹ- Rails Ͱ͍͏Active Record
ɾҰ൪ϝδϟʔͰΓ͍ͨ͜ͱͰ͖ͦ͏ ɾݹ͍ใώοτ͢ΔͷͰҙ (ver 3.x) ɹ- ࠷৽ ver 4.38 ͱ ver 5 Beta (2018/06/24)
How to Paginate
Pagination ɾOffset ɹ- ࠷ॳ͔Β nϨίʔυΛಡΈඈ͢ ɹɹˠ ख͚ܰͩͲύϑΥʔϚϯεͱਫ਼ ❌ ɾCursor ɹ-
SELECT ͷ։࢝ҐஔΛࢦఆ ɹɹˠ ͬͪ͜ͰΓ͍ͨ
Pagination ɾOffset ɹ- ࠷ॳ͔Β nϨίʔυΛಡΈඈ͢ ɹɹˠ ख͚ܰͩͲύϑΥʔϚϯεͱਫ਼ ɾCursor ʢࣺͯΔʣ ʢಡ·ͳ͍ʣ
Pagination ɾOffset ɹ- ࠷ॳ͔Β nϨίʔυΛಡΈඈ͢ ɹɹˠ ख͚ܰͩͲύϑΥʔϚϯεͱਫ਼ ɾCursor SELECT *
FROM users ɹORDER BY id LIMIT 10 OFFSET 30 SELECT * FROM users ɹWHERE id > 30 ORDER BY id LIMIT 10
Pagination / multi cursor ɾෳΧϥϜͰιʔτ͢Δ߹Ͳ͏ͳΔ͔ʁ ɹˠ ߦࣜ SELECT * FROM
users ɹWHERE (age, id) > (20, 30) ɹORDER BY age, id ɹLIMIT 10
by Sequelizeʁ
by Sequelize ɾ୯ҰΧϥϜͷ߹ ɹ- $gt ʮ > ʯ(greater than)
User.findAll({ ɹwhere: { id: { $gt: 30 } }, ɹorder: [['id', 'ASC']], ɹlimit: 10, })
by Sequelize / multi cursor ɾΧϥϜʹ (age, id) Έ͍ͨͳࢦఆͰ͖ͳ͍ ɾsequelize.literal('
SQLจ ‘) Ͱॻ͚Δ User.findAll({ ɹwhere: ɹɹsequelize.literal('(age, id) > (20, 30)'), ɹorder: [['age', 'ASC'], ['id', 'ASC']], ɹlimit: 10, })
Summary ɾ࣮ࡍ൚༻ϞδϡʔϧԽΛࢦͨ݁͠Ռɺ ɹຐվؾຯ… ɹ- GraphQLͱͷབྷΈ ɹ- GROUP BYͱซ༻Ͱ͖ΔΑ͏ʹ ɹ- DATEܕͷ߹CASTͨ͠Γ
ɾGarphQLରԠࠐΈͰϥΠϒϥϦԽͰ͖ͨΒ ɹधཁ͋Δʁ ɾSequelizeɺѱ͘ͳ͍ͱࢥ͏Αʂ
Thank you for listeningʂ