Slide 1

Slide 1 text

Sequelizeͷ PaginationͰ ۤ࿑ͨ͠࿩ kskn / 2018.06.28 @Roppongi.js #4

Slide 2

Slide 2 text

ࣗݾ঺հ ɾKeisuke Nakatane (@kskn) ɾORSO Inc. ৽نࣄۀ։ൃࣨ ɾαʔόɿΞϓϦɿϑϩϯτ ʹɹ̓ɹɿɹ̍ɹɿɹ̎ɹɹ͘Β͍ ɾલ৬͸ژ౎ͷήʔϜ԰Ͱਓࣄ

Slide 3

Slide 3 text

ߏ੒͸ͬ͘͟Γ͜Μͳײ͡ ʢ؅ཧπʔϧʣ ʢΞϓϦʣ ʢAPIαʔόʣ

Slide 4

Slide 4 text

What’s Sequelizeʁ

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Sequelize ɾNode.js ༻ͷOR Mapper ɹ- http://docs.sequelizejs.com/ ɹ- Rails Ͱ͍͏Active Record ɾҰ൪ϝδϟʔͰ΍Γ͍ͨ͜ͱ͸Ͱ͖ͦ͏ ɾݹ͍৘ใ΋ώοτ͢ΔͷͰ஫ҙ (ver 3.x) ɹ- ࠷৽͸ ver 4.38 ͱ ver 5 Beta (2018/06/24)

Slide 7

Slide 7 text

How to Paginate

Slide 8

Slide 8 text

Pagination ɾOffset ɹ- ࠷ॳ͔Β nϨίʔυΛಡΈඈ͹͢ ɹɹˠ ख͚ܰͩͲύϑΥʔϚϯεͱਫ਼౓ ❌ ɾCursor ɹ- SELECT ͷ։࢝ҐஔΛࢦఆ ɹɹˠ ͬͪ͜Ͱ΍Γ͍ͨ

Slide 9

Slide 9 text

Pagination ɾOffset ɹ- ࠷ॳ͔Β nϨίʔυΛಡΈඈ͹͢ ɹɹˠ ख͚ܰͩͲύϑΥʔϚϯεͱਫ਼౓ ɾCursor ʢࣺͯΔʣ ʢಡ·ͳ͍ʣ

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Pagination / multi cursor ɾෳ਺ΧϥϜͰιʔτ͢Δ৔߹Ͳ͏ͳΔ͔ʁ ɹˠ ߦ஋ࣜ SELECT * FROM users ɹWHERE (age, id) > (20, 30) ɹORDER BY age, id ɹLIMIT 10

Slide 12

Slide 12 text

by Sequelizeʁ

Slide 13

Slide 13 text

by Sequelize ɾ୯ҰΧϥϜͷ৔߹ ɹ- $gt ͸ ʮ > ʯ(greater than) User.findAll({ ɹwhere: { id: { $gt: 30 } }, ɹorder: [['id', 'ASC']], ɹlimit: 10, })

Slide 14

Slide 14 text

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, })

Slide 15

Slide 15 text

Summary ɾ࣮ࡍ͸൚༻ϞδϡʔϧԽΛ໨ࢦͨ݁͠Ռɺ ɹຐվ଄ؾຯ… ɹ- GraphQLͱͷབྷΈ ɹ- GROUP BYͱซ༻Ͱ͖ΔΑ͏ʹ ɹ- DATEܕͷ৔߹CASTͨ͠Γ ɾGarphQLରԠࠐΈͰϥΠϒϥϦԽͰ͖ͨΒ ɹधཁ͋Δʁ ɾSequelizeɺѱ͘ͳ͍ͱࢥ͏Αʂ

Slide 16

Slide 16 text

Thank you for listeningʂ