query paging ใน cloudflare d1 sql database
#cloudflare214 วันที่แล้ว

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 เข้าไปว่าต้องการข้อมูลที่เท่าไหร่