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

多人后台博客管理DAY04

时间:2023-04-03 11:00:48 Node.js

(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'}}{{include'./common/aside.art'}}···ID用户名邮箱角色状态操作{{每个用户}}{{@$value._id}}{{$value.username}}{{$value.email}}{{$value.role=='管理员'?'超级管理员':'普通用户'}}{{$value.state==0?'启用':'禁用'}}{{/each}}">">?<%for(vari=1;i<=total;i++){%>

  • ">{{i}}
  • <%}%>总计?'无':'内联'%>">">?
    ···{{/block}}{{block'script'}}···{{/block}}admin.js创建用户列表路由//引用expess框架constexpress=require('express');//创建博客展示页面路由constadmin=express.路由器();//渲染登录页面admin.get('/login',require('./admin/loginPage'));//实现登录功能admin.post('/login',require('./admin/login'));//创建用户列表routeadmin.get('/user',require('./admin/userPage'));//实现退出函数admin.get('/logout',require('./admin/logout'));//创建用户编辑页面路由admin.get('/user-edit',require('./admin/user-edit'));//创建用户添加功能路由admin.post('/user-edit',require('./admin/user-edit-fn'));//将路由对象导出为模块成员module.exports=admin;

    猜你喜欢