【nodejs進階之旅(2)】:使用koa2+mysql 實現列表資料分頁

叫我詹躲躲發表於2022-03-26

1.展示效果(分頁)

2.分頁主要欄位

分頁主要欄位包括 pageSize 每頁條數、pageNum 第幾頁、startRow 當前開始頁編號、endRow 當前結束頁編號、total 總數量。主要是根據前端分頁的引數,進行處理後,返回前端正確的資料,其實是一個很常見且簡單的功能。但是是非常也是非常重要的。

pageSize 每頁條數
pageNum  第幾頁
startRow 當前開始頁編號
endRow 當前結束頁編號
total 總數量

計算 3.startRow 和 endRow

封裝成一個函式

/* 分頁公共函式*/
module.exports = handlePages = (pageNum, pageSize, total) => {
    let startRow = total > 0 ? ((pageNum - 1) * pageSize + 1) : 0;
    let endRow = pageNum * pageSize <= total ? pageNum * pageSize : total;
    return {
        pageNum,
        pageSize,
        recordCounts:total,
        startRow,
        endRow
    }
}

4.介面函式中使用該函式

從前端傳參中獲取,分頁所需要的資料。

 let { nickname, name, role, pageSize, pageNum } = ctx.request.body;
 
 //此處進行處理
 let pageNum1 = (pageNum - 1) * pageSize
//獲取使用者資訊列表
async getAllUserList(ctx) {
   let { nickname, name, role, pageSize, pageNum } = ctx.request.body
   let res = []
   let pageNum1 = (pageNum - 1) * pageSize
   let total = (await User.getAllUserListTotal())[0].recordCounts
   if (!nickname && !name && !role) {
     res = (await User.getAllUserListNotCond(pageSize, pageNum1))
   } else {
     res = (await User.getAllUserList(nickname, name, role, pageSize, pageNum1))
   }
   ctx.body = {
     code: 0,
     data: res.map(v => {
       if (v.password) {
         delete v.password
       }
       return v
     }),
     //分頁所有的引數
     ...handlePages(pageNum, pageSize, total)
   }
 }

5.分頁中的MySql語句

根據分頁查詢資料庫的資料

//根據分頁查詢使用者列表
async getAllUserListNotCond(pageSize, pageNum) {
        return await query(`SELECT * FROM user LIMIT ${pageNum},${pageSize}`)
}

mySql獲取資料庫資料總條數

//獲取使用者資訊列表的總條數
async getAllUserListTotal() {
   return await query(`SELECT COUNT(*) as recordCounts FROM user`)
}

關於mySql的COUNT()函式

作用:COUNT() 函式返回匹配指定條件的行數。

SQL COUNT(column_name) 語法

COUNT(column_name) 函式返回指定列的值的數目(NULL 不計入):

SELECT COUNT(column_name) FROM table_name

SQL COUNT(*) 語法

COUNT(*) 函式返回表中的記錄數:

SELECT COUNT(*) FROM table_name

SQL COUNT(DISTINCT column_name) 語法

COUNT(DISTINCT column_name) 函式返回指定列的不同值的數目:

SELECT COUNT(DISTINCT column_name) FROM table_name

6.切換分頁的效果

切換分頁後的效果 還是很正常的。

7.總結

主要是包含mysql的基本使用。目前還在學習當中,有不當的地方,歡迎指正和一起交流學習。目前正在處理許可權管理模組。下一篇文章將講解如何進行許可權控制,有興趣的可以繼續關注。

相關文章