(4)项目功能实现的数据分页BLOG--源码目录└──model--数据库操作├──public--静态资源└──route--路由└──admin--blog管理└──userPage.js--用户分页功能路由└──admin.js--博客管理页面路由└──views--Template└──admin--博客管理页面美工模板└──user.art--用户列表页面└──app.js--创建网站服务userPage.jsimport用户聚合函数totalpages=Math.ceil(count/pagesize)通过限制一页的数量来划分用户总数limit()限制页面的数量查询,并传入每页显示的数据条数,skip()跳过多少条数据,以及传入数据要显示的起始位置数据开始查询位置=(当前页-1)*条数每页显示的数据如果用户没有传入页码,默认显示第一页数据//importusercollectionconstructorconst{User}=require('../../model/user');module.exports=async(req,res)=>{//ID标识当前访问的是用户管理页面req.app.locals.currentLink='user';//接收客户端传过来的当前页面参数letpage=req.query.page||1;//每页显示的数据项数letpagesize=10;//要查询的用户数据总数letcount=awaitUser.countDocuments({});//总页数lettotal=Math.ceil(count/pagesize);//页码对应的数据查询起始位置letstart=(page-1)*pagesize;//从数据库查询用户信息letusers=awaitUser.find({}).limit(pagesize).skip(start)//渲染用户列表模块res.render('admin/user',{users:users,page:page,total:total});}user.art循环显示数据{{eachusers}},使用$value_显示{{@$value._id}}其中@可以在原文中显示,去掉引号page-0+1另外还有隐式转换,为了防止字符串拼接,所以-0如果当前页大于要求的总页数,则隐藏向后翻页的按钮,向前翻页同理{{extend'./common/layout.art'}}{{block'main'}}{{include'./common/header.art'}} {{每个用户}}ID 用户名 邮箱 角色 状态 操作 {{/each}}{{@$value._id}} {{$value.username}} {{$value.email}} {{$value.role=='管理员'?'超级管理员':'普通用户'}} {{$value.state==0?'启用':'禁用'}}
