query paging ใน cloudflare d1 sql database
query paging ใน cloudflare d1 sql database
เรามาดูตัวอย่างการทำ paging ใน cloudflare d1 sql database กันครับ เผื่อนำไปใช้กัน ในตัวอย่างนี้ จะเป็นการ query ข้อมูลเป็นหน้า ๆ แล้วส่งหน้ากับจำนวนที่ต้องการเข้าไป
ไปดูตัวอย่างกันครับ
let page = 1
let pageSize = CONST.PAGE_SIZE
let dataResults: ArticleTbl[] = []
try {
let query: string = "SELECT m.id, m.title, m.category, cs.submenu_name " +
" FROM doe_article_main m join doe_category_submenu cs on (m.category=cs.submenu_id) " +
" ORDER BY id desc LIMIT ?1 OFFSET ?2";
let stmt = props.c.env.DB.prepare(query).bind(
pageSize,
(page - 1) * pageSize
);
const {results} = await stmt.all();
dataResults = results
} catch (e) {
console.log(e)
return <Error500/>
}
จากตัวอย่างผมจะ query doe_article_main จากนั้นเอาไป join กับ doe_category_submenu ในการทำ paging ผมจะส่ง pageSize ซึ่งเป็น ขนาดข้อมูลของแต่ละ page ว่าจะเอากี่ข้อมูล จากนั้น ผมจะใส่ค่า offset เข้าไปว่าต้องการข้อมูลที่เท่าไหร่