【nodejs进阶之旅(2)】:使用koa2+mysql 实现列表数据分页

2023-11-18

1.展示效果(分页)

2.分页主要字段

分页主要字段包括 pageSize 每页条数、pageNum 第几页、startRow 当前开始页编号、endRow 当前结束页编号、total 总数量。主要是根据前端分页的参数,进行处理后,返回前端正确的数据,其实是一个很常见且简单的功能。但是是非常也是非常重要的。

pageSize 每页条数
pageNum  第几页
startRow 当前开始页编号
endRow 当前结束页编号
total 总数量

计算 3.startRow 和 endRow

封装成一个函数

/* 分页公共函数*/
module.exports = handlePages = (pageNum, pageSize, total) => {
    let startRow = total > 0 ? ((pageNum - 1) * pageSize + 1) : 0;
    let endRow = pageNum * pageSize <= total ? pageNum * pageSize : total;
    return {
        pageNum,
        pageSize,
        recordCounts:total,
        startRow,
        endRow
    }
}

4.接口函数中使用该函数

从前端传参中获取,分页所需要的数据。

 let { nickname, name, role, pageSize, pageNum } = ctx.request.body;
 
 //此处进行处理
 let pageNum1 = (pageNum - 1) * pageSize
//获取用户信息列表
async getAllUserList(ctx) {
   let { nickname, name, role, pageSize, pageNum } = ctx.request.body
   let res = []
   let pageNum1 = (pageNum - 1) * pageSize
   let total = (await User.getAllUserListTotal())[0].recordCounts
   if (!nickname && !name && !role) {
     res = (await User.getAllUserListNotCond(pageSize, pageNum1))
   } else {
     res = (await User.getAllUserList(nickname, name, role, pageSize, pageNum1))
   }
   ctx.body = {
     code: 0,
     data: res.map(v => {
       if (v.password) {
         delete v.password
       }
       return v
     }),
     //分页所有的参数
     ...handlePages(pageNum, pageSize, total)
   }
 }

5.分页中的MySql语句

根据分页查询数据库的数据

//根据分页查询用户列表
async getAllUserListNotCond(pageSize, pageNum) {
        return await query(`SELECT * FROM user LIMIT ${pageNum},${pageSize}`)
}

mySql获取数据库数据总条数

//获取用户信息列表的总条数
async getAllUserListTotal() {
   return await query(`SELECT COUNT(*) as recordCounts FROM user`)
}

关于mySql的COUNT()函数

作用:COUNT() 函数返回匹配指定条件的行数。

SQL COUNT(column_name) 语法

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):

SELECT COUNT(column_name) FROM table_name

SQL COUNT(*) 语法

COUNT(*) 函数返回表中的记录数:

SELECT COUNT(*) FROM table_name

SQL COUNT(DISTINCT column_name) 语法

COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目:

SELECT COUNT(DISTINCT column_name) FROM table_name

6.切换分页的效果

切换分页后的效果 还是很正常的。

7.总结

主要是包含mysql的基本使用。目前还在学习当中,有不当的地方,欢迎指正和一起交流学习。目前正在处理权限管理模块。下一篇文章将讲解如何进行权限控制,有兴趣的可以继续关注。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【nodejs进阶之旅(2)】:使用koa2+mysql 实现列表数据分页 的相关文章

  • AWS Lambda 提前结束(没有任何显式返回或回调)

    我在放入 AWS Lambda 中的一些 Node js 代码时遇到了一些问题 我需要进行几个异步调用 虽然第一个调用的行为符合我的预期 但 lambda 函数在第二个调用完成之前终止 返回值为 null 这让我认为 lambda 正在执行
  • Heroku ENOENT:没有这样的文件或目录,stat '/app/build/index.html'

    我在 Heroku 中运行一个简单的测试站点时遇到问题 由于某种原因 当我希望它从 build 提供服务时 它试图从 app build 提供内容 错误 ENOENT 没有这样的文件或目录 stat app build index html
  • 将组件注册到现有的 Vue.js 实例

    我是 Vue js 新手 我想注册一个本地组件 如下所述 https v2 vuejs org v2 guide components html Local Registration https v2 vuejs org v2 guide
  • Amcharts 图表 - 图表列到自定义 URL 的超链接以在新选项卡/窗口中打开

    我正在尝试制作一个 amcharts 图表 其中的列链接到自定义网址 并希望网址在新选项卡 窗口中打开 我尝试将此代码添加到图形对象中 但它不起作用 它在同一选项卡 窗口中打开链接 listeners event clickItem met
  • Strapi 未加载 Digital Ocean 上托管的现有 MongoDB 中的集合

    我正在使用 Strapi 创建一个新应用程序 并尝试将其与托管在 Digital Ocean 上的 MongoDB 连接 但不幸的是Strapi 无法从现有 MongoDB 获取集合 在这里 我提到我实现 Strapi 与现有 MongoD
  • getElementsByClassName & IE8:对象不支持此属性或方法[重复]

    这个问题在这里已经有答案了 I know getElementsByClassName 不支持IE8 你知道我可以用什么来代替吗 我因错误而变得烦人 对象不支持此属性或方法 HTML 代码是 function sumar var elems
  • JavaScript 原型 - 请澄清

    有人可以帮我理解原型属性吗 我不明白原型属性是函数的属性还是函数内部的属性 假设我们创建以下构造函数 Food 此时 函数 Food 具有 Food prototype 属性 由于 Food 是 Object 的实例 因此这意味着 Obec
  • npm 错误! cb.apply 不是函数

    我收到这个错误 npm ERR cb apply is not a function 在Linux中做的时候npm install虽然我的npm版本是6 9 0 我的节点版本是v12 18 3 如何解决这个问题 如果您共享的是 Window
  • AngularJS - 服务、工厂、过滤器等中的依赖注入

    因此 我想在我的 Angular 应用程序中使用一些插件和库 目前 我只是引用这些函数 方法 因为它们是在 99 的应用程序中以完全忽略依赖注入的方式使用的 我有 例如 javascript 库 MomentJS 它处理格式化和验证日期 并
  • NodeJS CPU 一次飙升至 100%

    我有一个用 NodeJS 编写的 SOCKS5 代理服务器 我正在使用原生net and dgram打开 TCP 和 UDP 套接字的库 它可以正常工作大约 2 天 所有 CPU 的最大利用率约为 30 两天没有重新启动后 一个 CPU 峰
  • 无法使用 webpack 加载 Node 原生插件

    虽然我正在使用vue cli在生成 webpack 配置的示例代码中 没有任何特定于 vue 的内容 我像这样创建示例应用程序 vue init webpack webpack modules example 生成webpack base
  • 表单序列化javascript(无框架)

    想知道 javascript 中是否有一个没有 jquery 或任何框架的函数可以让我序列化表单并访问序列化版本 2023 年更新 Use FormData https developer mozilla org en US docs We
  • selenium-webdriver 与 webdriverjs 有什么区别(以及何时使用)?

    我是一位使用 selenium webdriver 的经验丰富的专业人士 我正在探索有关如何测试 javascript 应用程序的更多选项 我发现了 webdriverJs 不幸的是 我不明白这两者 2 之间有什么区别 有人可以解释一下何时
  • D3.js - 具有多个环的圆环图

    以下示例显示了 D3 js 中的圆环图 是否可以向图表添加多个圆环 var dataset apples 53245 28479 19697 24037 40245 var width 460 height 300 radius Math
  • 简单的颜色变化

    我正在创建一个用户界面 用户可以在其中更改页面的颜色值 我想要的是获取分配给其背景颜色的值并将其变亮一定程度 我只是想获得一条亮点线 而不必每次都制作新图像 示例 用户将背景颜色设置为 ECECEC 现在我希望某个元素边框变成 F4F4F4
  • 获取 byte[]

    我有一个 html 画布 如下所示 output is a base64string of image data var oldImage new Image oldImage onload function var resizeRatio
  • ES6 Reflect API 的好处

    我一直在努力升级一些代码以使用 ES6 语法 我有以下代码行 delete this foo 我的 linter 提出了使用建议 Reflect deleteProperty this foo 您可以找到该方法的文档here https d
  • Morgan Logger + Express.js:写入文件并在控制台中显示

    我正在尝试将 Morgan 与 Express js 结合使用来编写日志文件 同时也在控制台上显示我的日志 我正在使用这段代码 var logger require morgan var accessLogStream fs createW
  • 指定在任何 Jest 设置发生之前运行的代码

    tl dr 是 1 我怎样才能让Jest使用原生的require函数可以在任何地方加载我的测试中的所有模块 2 我将在哪里 如何进行修改 即替换为esm加载程序 https github com standard things esm ht
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959

随机推荐

  • 调试最长的一帧(第23天)

    看看总体进度 第22天通过CUllvisitor创建了渲染树和状态树 并进行必要的剔除 接下来进行排序和优化 RenderStage sort函数时按照前序渲染台 当前渲染台和后续渲染台的顺序进行 其中前序渲染台和后续渲染台通过Camera
  • 一台云服务器怎么挂多个网站吗,一台云服务器怎么挂多个网站

    一台云服务器怎么挂多个网站 内容精选 换一换 通过华为云备案 需要先购买华为云中国大陆节点服务器 用于网站备案使用 后称为 备案服务器 目前可用于华为云备案的服务器 请参见备案服务器 如果您的华为云帐号A中没有可备案的服务器 华为云帐号B中
  • .npmrc给单独包设置源

    1 package json中的dependencies或者devDependencies模块设置要下载包的版本信息 例如 dependencies antv g 3 4 10 2 在 npmrc中设置对应源 antv g registry
  • 通过css去掉input框默认样式

    input 去除阴影 box shadow none 聚焦input的蓝色边框 outline none textarea 禁止拖拽 resize none 去除边框 border none 常用于IOS下移除原生样式 webkit app
  • Java使用opencv计算两个多边形交并比IOU、重叠面积占比

    opencv引入配置看这里https blog csdn net angelpaiy article details 126870213 需要引入的opencv类 import org opencv core Scalar import o
  • Dart中常用的集合类型List、Set、Map、Queue

    Dart中常用的集合类型 List 列表 有序集合 可以修改数据 Dart中List对应数组 可以通过索引访问元素 Set 集合 无序 不可重复 常用于过滤重复数据 Map 映射 键值对集合 键必须唯一 值可以重复 常用于存储关联数据 Qu
  • 分享5个关于 Vue 的小知识,希望对你有所帮助(五)

    大家好 今天我继续分享5个关于 Vue 的小知识 希望对你有所帮助 往期文章 分享5个关于 Vue 的小知识 希望对你有所帮助 一 分享5个关于 Vue 的小知识 希望对你有所帮助 二 分享5个关于 Vue 的小知识 希望对你有所帮助 三
  • CTRL键不能使用(非硬件问题)

    如果ctrl键不能用了 并且排除是硬件问题 排除方法 电脑有两个CTRL键 可以试试另一个是否可以使用 那么肯定是驱动除了问题 相关链接 根据上面的教程修改之后 我的驱动是无法更新的 我换了一个驱动就能正常使用了 选择驱动程序详细信息 然后
  • ad7606中文资料_16位ADC数据采集模块AD7606(原理图、中文数据手册、例程等)

    AD7606 数据采集模块 16位ADC 8通道同时200KHz频率采集 每秒8 200K样本 SPI接口或8080 16位并口 可自行选择 AD7606 数据采集模块特性 使用AD7606 高精度16位ADC芯片 8路模拟输入 阻抗1M欧
  • ZED安装

    1 下载对应版本的ubantu的sdk 运行 run文件 2 安装过程中可能会存在依赖关系错误的问题 可以解决的方法有二 一 换源 二 网上搜依赖关系的解决方法 3 运行get api py会出现一直downing的情况 解决方法有二 一
  • Linux curl 命令详解

    该命令设计用于在没有用户交互的情况下工作 curl 是一个工具 用于传输来自服务器或者到服务器的数据 向服务器传输数据或者获取来自服务器的数据 可支持的协议有 DICT FILE FTP FTPS GOPHER HTTP HTTPS IMA
  • 区块链的几大模块

    共识的分类 POW POW的一般理解 根据难度做SHA256哈希运算 不停寻找Nonce 特定的HASH 前导0的个数越多 代表难度越大 优点是难于计算 一旦收到网络上的区块 能快速验证 难度算法按高度动态调整 维持出块时间不变 POW规范
  • 06 - string,number

    06 String Number 6 01 Number 关于数字的一些特性 属性与方法 数字 0123456789 var num 10 console log num 特殊数字值 NaN 非数字 数字相关方法 全局方法 number v
  • IntelliJ Idea入门教程:如何新建项目

    下载IntelliJ IDEA 创建项目后 就可以开始添加新项目 创建目录和包 添加新类 导入资源以及通过添加更多模块扩展项目 建立新项目 创建一个新目录 在 项目 工具窗口 Alt 1 中 右键单击要在其中创建新目录的节点 然后选择 Ne
  • [588]Grafana安装及简单使用

    简介 Grafana是一个跨平台的开源的度量分析和可视化工具 可以通过将采集的数据查询然后可视化的展示 并及时通知 它主要有以下六大特点 1 展示方式 快速灵活的客户端图表 面板插件有许多不同方式的可视化指标和日志 官方库中具有丰富的仪表盘
  • python中^是什么意思

    是什么意思 输入为 x 3 x x 2 print x 在python中 符号代表按位翻转 输出为 意思就是 按位异或 可以参考如下示例 In 4 2 2 Out 4 0 In 5 1 3 Out 5 2 In 6 333 333 Out
  • 【IEEE 13 节点分配系统中的THD降低】系统的谐波分析给出了各种总线上电流和电压的谐波频谱和THD(Simulink实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Simulink仿真实现 1 概述 IEEE 13 节点分配系统中的THD
  • 安装最新版greenplum6.10时报错:依赖检测失败。(详细解决步骤)

    报错原因 最新版本的greenplum6 10一些内部工具对系统环境的依赖有要求 故直接进行rpm包安装时会报依赖缺失 如果在装服务器系统的时候选则的最小化安装 那么必然会报这个错误 greenplum5及以下版本在安装的时候是不会报这个错
  • 第二周作业

    1 运行脚本可以显示出本机的ip地址 bin bash ifconfig eth0 sed n 2p awk print 2 ifconfig eth0 提取网卡eth0的配置信息 使用 传给sed sed n 2p 输出ifconfig
  • 【nodejs进阶之旅(2)】:使用koa2+mysql 实现列表数据分页

    1 展示效果 分页 2 分页主要字段 分页主要字段包括 pageSize 每页条数 pageNum 第几页 startRow 当前开始页编号 endRow 当前结束页编号 total 总数量 主要是根据前端分页的参数 进行处理后 返回前端正