【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 实现列表数据分页 的相关文章

  • S3.getSignedUrl 接受多种内容类型

    我正在使用react s3 uploader节点包 它接受一个signingUrl用于获取用于将对象存储到 S3 中的signedUrl 目前 我已经配置了一个 lambda 函数 带有 API 网关端点 来生成此signedUrl 经过一
  • 如何使用 Playwright 使用选择器查找框架 (iframe)

    我有一个小问题 无法找到使用 Microsoft Playwright 框架的答案 根据您可以使用以下代码获取 iframe const frame page frame frame login 但是如何使用选择器来查找 iframe 并与
  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • nodejs (libuv) 事件循环是否在一个阶段(队列)中执行所有回调,然后再进入下一阶段或以循环方式运行?

    我正在研究 Node js 中 libuv 提供的事件循环 我遇到了关注 Deepal Jayasekara 的博客 https blog insiderattack net event loop and the big picture n
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • JavaScript 继承;调用和原型

    要在Javascript中实现继承 通常需要执行以下两个步骤 假设我有一个基类 Animal var Animal function name this name name 我现在想从中派生一个子类 Dog 所以我想说 var Dog fu
  • 如何通过单击链接来更改 div 的内容?

    这是我的网页的 修改后的 jsfiddle 它还有很多 而且定位是正确的 与此相反 http jsfiddle net ry0tec3p 1 http jsfiddle net ry0tec3p 1 a href class btn1 st
  • 为 Node.js 客户端应用程序保留 Firebase 用户

    我正在使用 Firebase 构建 Node js 命令行界面 CLI 用于与后端进行身份验证 我想避免让用户每次运行命令时都输入密码 相反 我想实现一个 登录 流程 将凭证保留到文件系统 该凭证可用于后续的无密码身份验证 直到用户 注销
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 带有 npm 启动脚本的 Nodejs 应用程序

    我对nodejs很陌生 在我的docker化环境中 我想为nodejs应用程序提供appdynamics支持 这要求每个应用程序都要求将以下内容作为其应用程序的第一行 require appdynamics profile controll
  • 使用 Jade 评估自定义 javascript 方法 (CircularJSON)

    我想通过 Jade 将一个对象解析为客户端 JavaScript 通常这会起作用 script var object JSON parse JSON stringify object but my object is circular ht
  • Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对茉莉花有经验并且非常喜欢它 有谁有 Jasmine 和 Mocha 的经验 特别是 Rails 的经验吗 我想知道是否值得转用 我已经在 J
  • $resource.query 返回分割字符串(字符数组)而不是字符串

    我正在使用像下面这样的 Angular resource angular module app factory data function resource var Con resource api data update method P
  • Highcharts jQuery 渲染问题 - 所有浏览器

    我在尝试使用构建堆积柱形图时遇到了一个奇怪的问题高图表 http www highcharts com 当图表呈现时 在您调整浏览器大小之前 不会显示列无论如何 导致图表重绘 我认为 图表的其余部分显示 轴 标题等 但不显示列本身 我在 I
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • 使用 Enzyme 测试 `React.createRef` api

    我想测试下面的类 它使用React createRef api 不过 快速搜索并没有发现任何这样做的例子 有人成功过吗 我该如何嘲笑裁判 理想情况下我想使用shallow class Main extends React Component
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供

随机推荐

  • 调试最长的一帧(第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 总数量 主要是根据前端分页的参数 进行处理后 返回前端正