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
相关推荐
知否技术5 小时前
为什么nodejs成为后端开发者的新宠?
前端·后端·node.js
谢尔登10 小时前
【Node.js】worker_threads 多线程
node.js
osnet14 小时前
showdoc二次开发
node.js·vue
泯泷15 小时前
「生产必看」在企业环境中正确使用 Node.js 的九大原则
前端·后端·node.js
太阳火神的美丽人生16 小时前
Vant WeApp 开启 NPM 遇到的问题总结
前端·npm·node.js
qingshun1 天前
Node 系列之预热知识(1)
node.js
余生H2 天前
前端的全栈混合之路Meteor篇:RPC方法注册及调用
前端·rpc·node.js·全栈
前端 贾公子2 天前
Node.js env 环境变量多种配置方式
node.js
sooRiverling2 天前
VUE 开发——Node.js学习(一)
vue.js·学习·node.js
_清豆°2 天前
NodeJS下载、安装及环境配置教程,内容详实
javascript·node.js