- 将用户信息展示到用户列表页面
① 将用户信息从数据库中查询出来
② 更改 user.art 文件下的表格数据
③ 最终显示效果如下
数据分页
当数据库中的数据非常多时,数据需要分批次显示,这时就需要用到数据分页功能
分页功能核心要素:
-
当前页,用户通过点击上一页或者下一页或者页码产生,客户端通过get参数方式传递到服务器端
-
总页数,根据总页数判断当前页是否为最后一页,根据判断结果做响应操作
总页数:Math.ceil(总数据条数 / 每页显示数据条数)
分页功能用到的两个查询方法:
- limit(2) // limit 限制查询数量 传入每页显示的数据数量
- skip(1) // skip 跳过多少条数据(从跳过的数据后面开始查询) 传入显示数据的开始位置
数据开始查询位置 =(当前页 - 1)* 每页显示的数据条数
——————————————————————————
- 实现地址栏输入页码跳转页面功能
① 起始页面数据(自行添加)
② 第二页显示的数据
- 通过分页器跳转页面
用户信息修改
-
为修改按钮添加跳转链接
-
获取地址栏中的id参数
-
把添加操作的地址和修改操作的地址区分开
注: @ 表示原文输出 -
将要修改的用户ID传递到服务器端
-
建立用户信息修改功能对应的路由
-
接收客户端表单传递过来的请求参数
-
根据id查询用户信息,并将客户端传递过来的密码和数据库中的密码进行比对
-
如果比对失败,对客户端做出响应
-
如果密码对比成功,将用户信息更新到数据库中
① 在route\admin 文件夹下创建user-modify.js文件
② 添加以下代码
// user-modify.js
// 导入用户集合构造函数
const { User } = require('../../model/user');
// 引入bcrypt 模块
const bcrypt = require('bcrypt');
module.exports = async(req, res, next) => {
// 接收客户端表单传递过来的请求参数
const { username, email, role, state, password } = req.body;
// 即将要修改的用户id
const id = req.query.id;
// 查询用户
let user = await User.findOne({_id: id});
// 密码比对
const isValid = await bcrypt.compare(password,user.password);
if (isValid) {
// 密码比对成功
// 将用户信息更新到数据库中
await User.updateOne({_id: id}, {
// 指定除了密码以外的其他字段
username: username,
email: email,
role: role,
state: state
});
// 重定向回用户列表页面
res.redirect('/admin/user');
} else {
// 密码比对失败
// 触发错误处理中间件
let obj = {path: '/admin/user-edit', message: '密码比对失败,不能进行用户信息的修改', id: id};
// next方法第一个参数接收一个字符串
next(JSON.stringify(obj));
}
}
③ 修改错误处理中间件
→ 【学习笔记】黑马博客项目(五)