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
相关推荐
vipbic4 小时前
Strapi 5 怎么用才够爽?这款插件带你实现“建站自由”
后端·node.js
趴在窗边数星星5 小时前
Koa 源码深度解析:带你理解 Koa 的设计哲学和核心实现原理
node.js
程序员爱钓鱼10 小时前
Node.js 编程实战:CSV&JSON &Excel 数据处理
前端·后端·node.js
敢敢のwings12 小时前
MCP Node.js SDK 全栈开发环境搭建详解
node.js
running up12 小时前
Bun 全面指南及与 Node.js 深度对比
node.js
BD_Marathon12 小时前
【JavaWeb】Node.js_简介和安装
node.js
BD_Marathon13 小时前
【JavaWeb】NPM_简介和相关配置
前端·npm·node.js
BD_Marathon13 小时前
NPM_配置的补充说明
前端·npm·node.js
程序员爱钓鱼1 天前
Node.js 编程实战:文件读写操作
前端·后端·node.js
sg_knight1 天前
Nuxt 4 生产环境部署指南 (Node.js + Nginx)
运维·nginx·node.js·nuxt·ssr