【学习笔记】博客项目(四)

本文介绍了如何在前端项目中实现数据分页功能,包括计算总页数和利用分页查询数据库的方法。同时,讲解了用户信息修改的流程,涉及地址栏参数获取、路由设置和密码比对更新。这是一个关于学习笔记的博客,涵盖了数据库操作、JavaScript和前端服务器知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 将用户信息展示到用户列表页面
    ① 将用户信息从数据库中查询出来
    在这里插入图片描述
    ② 更改 user.art 文件下的表格数据
    在这里插入图片描述

③ 最终显示效果如下
在这里插入图片描述

数据分页

当数据库中的数据非常多时,数据需要分批次显示,这时就需要用到数据分页功能

分页功能核心要素:

  1. 当前页,用户通过点击上一页或者下一页或者页码产生,客户端通过get参数方式传递到服务器端

  2. 总页数,根据总页数判断当前页是否为最后一页,根据判断结果做响应操作

在这里插入图片描述
总页数:Math.ceil(总数据条数 / 每页显示数据条数)

分页功能用到的两个查询方法:
- limit(2) // limit 限制查询数量 传入每页显示的数据数量
- skip(1) // skip 跳过多少条数据(从跳过的数据后面开始查询) 传入显示数据的开始位置

数据开始查询位置 =(当前页 - 1)* 每页显示的数据条数
——————————————————————————

  1. 实现地址栏输入页码跳转页面功能
    在这里插入图片描述
    ① 起始页面数据(自行添加)
    在这里插入图片描述
    ② 第二页显示的数据
    在这里插入图片描述
  2. 通过分页器跳转页面
    在这里插入图片描述
    在这里插入图片描述

用户信息修改

  1. 为修改按钮添加跳转链接
    在这里插入图片描述

  2. 获取地址栏中的id参数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  3. 把添加操作的地址和修改操作的地址区分开
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    注: @ 表示原文输出

  4. 将要修改的用户ID传递到服务器端
    在这里插入图片描述

  5. 建立用户信息修改功能对应的路由
    在这里插入图片描述

  6. 接收客户端表单传递过来的请求参数

  7. 根据id查询用户信息,并将客户端传递过来的密码和数据库中的密码进行比对

  8. 如果比对失败,对客户端做出响应

  9. 如果密码对比成功,将用户信息更新到数据库中

① 在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));
    }
}

③ 修改错误处理中间件
在这里插入图片描述
【学习笔记】黑马博客项目(五)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值