Node.js+Express+Mysql实现分页查询

根据记录数总数和分页数获到页总数

function pageCount (totalnum,limit){
    return totalnum > 0 ? ((totalnum < limit) ? 1 : ((totalnum % limit) ? (parseInt(totalnum / limit) + 1) : (totalnum / limit))) : 0;
}

接收请求代码

router.get('/api/user/page', async (req, res) => {

    let pageNo = req.query.pageNo;
    let pageSize = req.query.pageSize;
    const startIndex = (pageNo - 1) * pageSize;
    const queryString = `SELECT * FROM sys_user LIMIT ${startIndex}, ${pageSize}`;
    let data =  await query(queryString); 
    const countSql = 'select count(*) count from sys_user'
    let countData =  await query(countSql); 
    let count = countData[0].count;

    let pageData = {
        total : count,   
        pages : sysUtils.pageCount(count,pageSize),
        records : data
    }

    res.send({
        status: 200,
        success : true,
        message: '',
        data: pageData,
    })
})

数据库代码

const mysql = require('mysql')
const pool = mysql.createPool({
    host: '127.0.0.1',
    user: 'root',
    password: '123456',
    database: 'lzwj_data',
    port: 3306
})

function camelCaseKeys(obj) {
    const result = {};
    for (let key in obj) {
        let newKey = key[0].toLowerCase() + key.slice(1).replace(/_([a-z])/g, function($0,$1){return $1.toUpperCase();});
        result[newKey] = obj[key];
    }
    return result;
}


let query = function( sql, values ) {
  // 返回一个 Promise
  return new Promise(( resolve, reject ) => {
    pool.getConnection(function(err, connection) {
      if (err) {
        reject( err )
      } else {
        connection.query(sql, values, ( err, rows) => {
          if ( err ) {
            reject( err )
          } else {
            rows = rows.map(item => camelCaseKeys(item));
            resolve( rows )
          }
          // 结束会话
          connection.release()
        })
      }
    })
  })
}



module.exports =  query

调试:

Node.js+Express+Mysql实现分页查询_第1张图片

Node.js+Express+Mysql实现分页查询_第2张图片

你可能感兴趣的:(Node.js,express,mysql,node.js,mysql,express)