多人后台博客管理
(四)项目功能的实现之数据分页
BLOG -- 源码目录
└── model -- 数据库操作
├──public -- 静态资源
└──route -- 路由
└──admin --博客管理
└── userPage.js --用户分页功能路由
└── admin.js --博客管理页面路由
└── views -- 模板
└── admin --博客管理页面art模板
└── user.art --用户列表页
└── app.js -- 创建网站服务
userPage.js
- 导入用户集合函数
- 总页数 = Math.ceil(count / pagesize)总用户数除以限制一页的数量
- limit()限制查询数量,传入每页显示的数据数量,skip()跳过多少条数据,传入显示数据的开始位置
- 数据开始查询位置=(当前页-1)*每页显示的数据条数
- 用户没有传入页码则默认显示第一页的数据
// 导入用户集合构造函数
const { User } = require('../../model/user');
module.exports = async (req, res) => {// 标识 标识当前访问的是用户管理页面
req.app.locals.currentLink = 'user';
// 接收客户端传递过来的当前页参数
let page = req.query.page || 1;
// 每一页显示的数据条数
let pagesize = 10;
// 查询用户数据的总数
let count = await User.countDocuments({});
// 总页数
let total = Math.ceil(count / pagesize);
// 页码对应的数据查询开始位置
let start = (page - 1) * pagesize;
// 将用户信息从数据库中查询出来
let users = await User.find({}).limit(pagesize).skip(start)
// 渲染用户列表模块
res.render('admin/user', {
users: users,
page: page,
total: total
});
}
user.art
- 对数据进行一个循环的显示 {{each users}},用$value_来显示
- {{@$value._id}}其中@可以原文展示,去掉引号
- page-0+1加法有隐式转换,为了防止变成字符串拼接,所以-0
- 如果当前页大于所需总页数则隐藏掉向后翻页的按钮,向前翻页同理
{{extend './common/layout.art'}}{{block 'main'}}{{include './common/header.art'}}{{include './common/aside.art'}}···
ID
用户名
邮箱
角色
状态
操作
{{each users}}
{{@$value._id}}
{{$value.username}}
{{$value.email}}
{{$value.role == 'admin' ? '超级管理员': '普通用户'}}
{{$value.state == 0 ? '启用': '禁用'}}
{{/each}}
- «
- {{i}}
- »
···
{{/block}}{{block 'script'}}
···{{/block}}
【多人后台博客管理】admin.js
- 创建用户列表路由
// 引用expess框架
const express = require('express');
// 创建博客展示页面路由
const admin = express.Router();
// 渲染登录页面
admin.get('/login', require('./admin/loginPage'));
// 实现登录功能
admin.post('/login', require('./admin/login'));
// 创建用户列表路由
admin.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;
推荐阅读
- VuePress|VuePress 博客搭建系列 33 篇正式完结!
- 多人后台管理博客DAY03
- 多人博客后台管理DAY02
- git|git 多人在同一分支上迭代开发时,如何保证分支提交历史保持线性
- 博客网站搭建框架的选择(Hexo,Typecho,Halo,WordPress)
- react--项目开发|react 项目--博客系统(后端总结)
- 如何利用VuePress和GithubPage搭建一个轻量级博客
- 博客园主题美化中BUG修复方法
- netcore后台任务注意事项
- c语言|C语言初阶——2.函数