node.js 封装分页查询

node.js封装sql分页查询

方法:

javascript 复制代码
/**
 * 生成分页查询sql
 * @param {string} table 表名
 * @param {number} pageNum 分页页数 
 * @param {number} pageSize 分页条数 
 * @param {object} query 查询对象 例:{id:1,name:'小明'}
 * @returns sql语句
 */
const limit = (table, pageNum, pageSize, query) => {
    let sql = `WHERE `
    let keyList = Object.keys(query) // 提取查询对象中的key为数组
    //查询对象全为空则结束函数
    if (!keyList.some(e => query[e])) { //如果查询对象中得value都为空的话查询条件为空
        sql = ''
    } else {
        //生成SQL语句
        keyList.forEach((e, index) => {
            //判断下一个分页条件是否为空,如果不为空则拼接AND
            let context = query[keyList[index + 1]] ? ' AND ' : '' 
            //value不为空时,拼接筛选条件
            if (query[e]) {
                sql += `${e} like '%${query[e]}%'${context} ` //拼接sql
            }
        })
    }
    return `SELECT * FROM ${table} ${sql}LIMIT ${(pageNum - 1) * 10},${pageSize}`
}
module.exports = limit

使用:

javascript 复制代码
  let {
        pageSize, // 条数
        pageNum,  // 页数
        sb_Name   // 穿过来的对象
    } = req.query //req:请求对象 query:get请求携带对象
    const selectData = {
        sb_Name   // 需要筛选的对象
    }
    let sqlString = limit('tableName', pageNum, pageSize, selectData)
   // sqlString =  SELECT * FROM u8_table  LIMIT 0,10 sqlString
相关推荐
在下千玦3 小时前
#管理Node.js的多个版本
node.js
你的人类朋友4 小时前
MQTT协议是用来做什么的?此协议常用的概念有哪些?
javascript·后端·node.js
还是鼠鼠7 小时前
Node.js中间件的5个注意事项
javascript·vscode·中间件·node.js·json·express
南通DXZ11 小时前
Win7下安装高版本node.js 16.3.0 以及webpack插件的构建
前端·webpack·node.js
你的人类朋友11 小时前
浅谈Object.prototype.hasOwnProperty.call(a, b)
javascript·后端·node.js
前端太佬11 小时前
暂时性死区(Temporal Dead Zone, TDZ)
前端·javascript·node.js
Mintopia12 小时前
Node.js 中 http.createServer API 详解
前端·javascript·node.js
你的人类朋友12 小时前
CommonJS模块化规范
javascript·后端·node.js
Mintopia1 天前
Node.js 中 fs.readFile API 的使用详解
前端·javascript·node.js
咖啡教室1 天前
nodejs开发后端服务详细学习笔记
后端·node.js