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
相关推荐
星辰徐哥1 天前
本地视频预览别只自己看:把Remotion动效项目发给客户远程验收
docker·ai·node.js·html·音视频·react·remotion
ID34610744201 天前
【课程设计】基于Spring Boot+Vue的校园共享无人机服务系统设计与实现-计算机毕设 附源码44219
javascript·vue.js·spring boot·python·node.js·php·课程设计
敲敲敲敲暴你脑袋1 天前
地图瓦片批量改色来啦!
node.js·gis·数据可视化
太子釢2 天前
AI 开发个人记账 App(服务端篇)
node.js·ai编程
用户64340495148512 天前
Elpis 项目构建工具与前端基建实践总结
node.js
FungLeo2 天前
成为全栈·Node 后端篇·后端测试策略:单元、集成与测试数据库
单元测试·node.js·集成测试·测试策略·成为全栈·测试数据库
FungLeo2 天前
成为全栈·Node 后端篇·评论内容安全:敏感词过滤、三态审核与级联删除
node.js·敏感词过滤·成为全栈·评论内容安全·评论审核·级联删除
FungLeo3 天前
成为全栈·Node 后端篇·阅读量防刷:去重、冷却与计数写分离
node.js·读写分离·数据去重·接口防刷·成为全栈·数据冷却
脉动数据行情13 天前
Node.js WebSocket 实现贵金属实时行情监听 伦敦金 / 伦敦银自动重连方案
websocket·node.js·vim
不老刘3 天前
一行命令解决 Node.js 版本兼容问题:`--openssl-legacy-provider` 深度解析
node.js