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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【nodejs进阶之旅(2)】:使用koa2+mysql 实现列表数据分页

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的基本使用。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
SQL 关系型数据库 MySQL
解决向MySQL中导入文件中的 数据时出现的问题~
解决向MySQL中导入文件中的 数据时出现的问题~
|
1天前
|
SQL 关系型数据库 MySQL
mysql插入500条数据sql语句
【5月更文挑战第12天】
|
1天前
|
SQL 存储 关系型数据库
MySQL进阶-增删查改(全网最详细sql教学)-3
MySQL进阶-增删查改(全网最详细sql教学)
6 0
|
1天前
|
SQL 关系型数据库 MySQL
MySQL进阶-增删查改(全网最详细sql教学)-2
MySQL进阶-增删查改(全网最详细sql教学)
6 0
|
1天前
|
SQL NoSQL 关系型数据库
MySQL进阶-增删查改(全网最详细sql教学)-1
MySQL进阶-增删查改(全网最详细sql教学)
6 0
|
1天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之写doris,mysql字段变更,重新提交才能同步新字段数据吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1天前
|
关系型数据库 MySQL Java
实时计算 Flink版产品使用合集之同步MySQL数据到Hologres时,配置线程池的大小该考虑哪些
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1天前
|
NoSQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之如何将MySQL的CDC实时数据写入到Hudi
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1天前
|
消息中间件 关系型数据库 Kafka
实时计算 Flink版产品使用合集之使用DTS从RDSMySQL数据库同步数据到云Kafka,增量同步数据延迟时间超过1秒。如何诊断问题并降低延迟
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之从MySQL同步数据到Doris时,历史数据时间字段显示为null,而增量数据部分的时间类型字段正常显示的原因是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。

推荐镜像

更多