当前位置: 首页 > 后端技术 > Node.js

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

时间:2023-04-03 17:22:26 Node.js

1.显示效果(分页)2、分页的主要字段分页的主要字段包括pageSize每页条数,pageNum是第几页,startRow当前起始页码,endRow当前结束页码,total总页数。主要是根据前端分页的参数,经过处理,返回正确的数据给前端,其实是一个很普通很简单的功能。但这非常非常重要。pageSize每页条目数pageNum是哪一页startRow当前起始页码endRow当前结束页码total总量计算3.startRow和endRow封装成一个函数/*pagingpublicfunction*/module.exports=handlePages=(pageNum,pageSize,total)=>{让startRow=total>0?((pageNum-1)*pageSize+1):0;让endRow=pageNum*pageSize<=总数?pageNum*pageSize:总计;返回{pageNum,pageSize,recordCounts:total,startRow,endRow}}4.该函数用于接口函数中,从前端传参中获取分页需要的数据。let{昵称,姓名,角色,pageSize,pageNum}=ctx.request.body;//这里处理letpageNum1=(pageNum-1)*pageSize//获取用户信息列表asyncgetAllUserList(ctx){let{nickname,name,role,pageSize,pageNum}=ctx.request.bodyletres=[]letpageNum1=(pageNum-1)*pageSizelettotal=(awaitUser.getAllUserListTotal())[0].recordCountsif(!nickname&&!name&&!role){res=(awaitUser.getAllUserListNotCond(pageSize,pageNum1))}else{res=(awaitUser.getAllUserList(nickname,name,role,pageSize,pageNum1))}ctx.body={code:0,data:res.map(v=>{if(v.password){删除v.password}returnv}),//pageallparameters...handlePages(pageNum,pageSize,total)}}5.MySqlstatementinpagingquerydatabasedata//根据分页查询用户列表asyncgetAllUserListNotCond(pageSize,pageNum){returnawaitquery(`SELECT*FROMuserLIMIT${pageNum},${pageSize}`)}mySql获取数据库数据总数//获取用户信息列表总数asyncgetAllUserListTotal(){returnawaitquery(`SELECTCOUNT(*)asrecordCountsFROMuser`)}关于mySql的COUNT()函数功能:COUNT()函数返回符合指定条件的行数SQLCOUNT(column_name)语法COUNT(column_name)函数返回指定列中值的个数(NULL不算):SELECTCOUNT(column_name)FROMtable_nameSQLCOUNT(*)语法COUNT(*)函数返回表中记录的个数:SELECTCOUNT(*)FROMtable_nameSQLCOUNT(DISTINCTcolumn_name)语法COUNT(DISTINCTcolumn_name)函数返回指定列的不同值的个数:SELECTCOUNT(DISTINCTcolumn_name)FROMtable_name6.切换分页的效果切换的效果分页还是正常的。7、总结主要包括mysql的基本使用。还在学习中,如有不妥之处,欢迎指正,共同交流学习。目前在做权限管理模块。下一篇文章会讲解如何控制权限,有兴趣的可以继续关注。