web前端 | 博客(八)用户信息修改功能

article/2025/9/11 23:54:03

用户信息修改功能

当点击用户后面的按钮时,要跳转到用户信息修改页面。而修改和添加实际上是同一个页面。
要区分跳转后是添加操作还是修改操作,在于携带的参数。
如果是添加操作,那就直接跳转过去;如果是修改操作,那就携带当前用户的id,通过get的方式传递过去。这样,在跳转到用户编辑页面的时候,可以通过get方式中是否有id参数,来区分到底是添加操作还是修改操作。如果是修改操作,还需要将要修改的用户信息从数据库中查询出来,并显示在页面中。
当用户在页面中修改完信息以后,点击提交表单按钮,向服务器发送修改用户信息的请求。
修改界面表单的上方显示的是要修改用户的id值,如果是添加用户,这个地方是不需要显示的。所以在模板中需要判断。

为用户列表页面为修改按钮添加链接

修改链接是admin/user-edit
在views/user.art中

<a href="/admin/user-edit?id={{@$value._id}}" class="glyphicon glyphicon-edit"></a>

此时点击即可跳转,并且地址栏携带id参数。

找到编辑页面所对应的路由user-edit.js,在这里,要获取到地址栏中的id参数,从而判断是添加还是修改操作。
因为无论是message还是id参数,都是存放在req.query当中,所以可以继续解构。
引入User模块,
通过id获取到用户信息,并将user传递给模板user-edit.art。
由于这个页面就是一个表单,所以要通过表单value属性把用户的信息显示在表单的控件里面。
但是,当是添加用户操作时,并没有传递给模板user,如果模板中还是用到了User,那么将会报错。所以要先判断user存不存在,再获取它的属性。

密码不可以直接修改,要在单独的地方进行修改密码操作。有两种做法:

  1. 直接隐藏密码,不让用户修改
  2. 让用户填写密码,但是密码错误则不让用户修改

在user-edit.js中,渲染页面时,为添加和修改页面设置自己的提交页面和按钮。

  if (id) {//修改操作let user = await User.findOne({_id: id});//res.send(user);//return;//渲染用户编辑页面res.render('admin/user-edit', {message: message,user: user,link: '/admin/user-add',button: '修改'});} else {//添加操作res.render('admin/user-edit', {message: message,link:  '/admin/user-edit',button: '添加'});}
            <form class="form-container" action="{{link}}" method="post"><div class="form-group"><label>用户名</label><input name="username" type="text" class="form-control" placeholder="请输入用户名" value="{{user && user.username}}"></div><div class="form-group"><label>邮箱</label><input name="email" type="email" class="form-control" placeholder="请输入邮箱地址" value="{{user && user.email}}"></div><div class="form-group"><label>密码</label><input name="password" type="password" class="form-control" placeholder="请输入密码"></div><div class="form-group"><label>角色</label><select name="role" class="form-control"><option value="normal" {{user && user.role == 'normal' ? 'selected' : ''}}>普通用户</option><option value="admin" {{user && user.role == 'admin' ? 'selected' : ''}}>超级管理员</option></select></div><div class="form-group"><label>状态</label><select name="state" class="form-control"><option value="0" {{user && user.state == 0 ? 'selected' : ''}}>启用</option><option value="1" {{user && user.state == 1 ? 'selected' : ''}}>禁用</option></select></div><div class="buttons"><input type="submit" class="btn btn-primary" value="{{button}}"></div></form></div>

修改数据库中的用户信息

  1. 将要修改的用户id传递到服务器端(link: '/admin/user-modify?id=' + id
  2. 建立用户信息修改功能对应的路由
  3. 接收客户端表单传递过来的请求参数
  4. 根据id查询用户信息,并将客户端传递过来的密码和数据库中的密码进行比对
  5. 如果比对失败,直接对客户端做出响应
  6. 如果比对成功,则将用户信息更新到数据库中

如果比对失败,要给请求处理函数传一个next,然后失败后调用next,传一个字符串类型的对象过去。并且需要携带id信息。

    let obj = {path: '/admin/user-edit', message: '密码比对失败,无法修改信息', id : id};return next(JSON.stringify(obj));

但此时,app中的中间件代码是写死的,需要改善一下这个代码,把所有传递的参数拼接到地址后面。
app.js

app.use((err, req, res, next) => {//将字符串对象转换为对象类型//JSON.parse()const result = JSON.parse(err);//console.log(err);let params = [];for(let attr in result) {if(attr != 'path'){params.push(attr + '=' + result[attr]);}}return res.redirect(`${result.path}?${params.join('&')}`);
})

输入错误密码,将得到这样的提示
在这里插入图片描述
而地址栏是这样的
在这里插入图片描述

如果比对成功,把从req.body中解构出用户的属性,并更新到数据库中。其中密码是不能更新的。

	//不包括idconst { username, email, role, state, password } = req.body;  await User.updateOne({_id: id}, {username: username,email: email,role: role,state: state});

通过重定向

    res.redirect('/admin/user');

提交成功后,页面重定向到user页面了。
此时,用户信息修改功能完成。


http://chatgpt.dhexx.cn/article/jNEEsefW.shtml

相关文章

SSM框架下对信息执行修改操作时的信息弹窗回显以及对信息修改后对数据库的更新问题

SSM框架下对信息执行修改操作时的信息弹窗回显以及对信息修改后的同步问题 概括主要说一下前端的实现 概括 今天在做实训作业时&#xff0c;有个对数据信息进行修改的操作&#xff0c;要求点击修改按钮后弹出修改框&#xff0c;栏目中需要显示出旧的数据信息&#xff0c;当将输…

svn修改提交日志信息

参考&#xff1a;唐小码个人博客 一、svn修改提交的msg信息和作者信息 鼠标右键找到show log> 选择要修改的日志行&#xff0c;第一个是修改作者信息&#xff0c;第二个是修改日志信息 二、svn修改提交的日期信息 修改日期信息的话&#xff0c;你得先有svn服务器的权限&…

【JSP】用户信息界面操作 ---- 用户信息修改

文章目录 用户信息界面操作 ---- 用户信息修改Ⅰ.修改userinfo.jsp 实现修改页面跳转Ⅱ.创建 userUpdate.jsp 修改页面Ⅲ.完善 dbHelper类&#xff0c;添加用户修改方法Ⅳ.创建 upDataServlet&#xff0c;实现用户信息修改功能Ⅴ.效果展示 用户信息界面操作 ---- 用户信息修改 …

windows本地git账户信息修改

git账户发生变化&#xff0c;比如密码修改或者项目种账户进行替换本地账户如何修改和切换&#xff1f; 1、进入控制面板 2、点击 用户账户 3、点击管理“管理Windows凭据”&#xff0c;进入凭据管理界面 4、选择需要修改的git账户对应的地址&#xff0c;点击右侧的箭头&#x…

Android设备信息修改器,如何更改android手机的设备号信息

工具/原料 手机信息修改器 手机已root Xposed框架 方法/步骤 首先我们看在没使用手机信息修改器(琢石模拟器)的情况下&#xff0c;手机的串号是多少&#xff0c;可以看到这个机器的串号是空的。 打开手机信息修改器(琢石模拟器)&#xff0c;进入虚拟环境中&#xff0c;一键生成…

Git系列之修改历史提交信息

文章の目录 1、查看 git 提交记录2、修改最近两个或者两次上的commit信息3、扩展&#xff1a;修改上一次git commit 提交的信息参考写在最后 1、查看 git 提交记录 git log2、修改最近两个或者两次上的commit信息 比如我这里有三次提交 使用命令&#xff1a; git rebase -i…

ssh服务器banner信息,几种情况下的banner信息修改

一.telnet 当telnet建立连接時&#xff0c;修改主机会出现的提示信息 1.先编辑一個要显示的信息 # vi /etc/telnet.msg this is a telnet message! 2.在/etc/inetd.conf中的telentd后加上-b 选项&#xff0c;指定包含信息的文件 telnetd stream tcp nowait root /usr/lbin/teln…

如何更改计算机的用户信息,如何更改电脑的账户信息

电脑已经成为生活中必不可少的工具之一&#xff0c;电脑中存放重要的数据资料等&#xff0c;因此保护我们的系统安全是非常重要的事。设置电脑的账户信息可以提升电脑的安全性能&#xff0c;对帐号定期管理也是很有必要的。下面小编就教教大家怎么更改电脑的账户信息。 步骤如下…

修改计算机基本信息,windows10系统下怎样更改基本信息中的制造商型号

如果用户是使用GHOST版安装的windows10系统&#xff0c;那么计算机基本信息里的型号都会提供商的信息&#xff0c;型号也会一样。有些朋友觉得不爽&#xff0c;就想要如何修改WIN10里基本信息中的制造商型号。这该如何操作呢&#xff1f;接下来&#xff0c;就随小编看看具体操作…

计算机硬件信息被修改怎么还原,修改bios硬件信息方法

你们知道怎么BIOS的硬件信息怎么修改吗?下面是学习啦小编带来修改bios硬件信息方法的内容&#xff0c;欢迎阅读! 修改bios硬件信息方法&#xff1a; 按下主机箱上的开机键&#xff0c;在电脑出现第一屏幕信息时&#xff0c;屏幕会有进入CMOS按键提示信息(注&#xff1a;不同品…

使用SpringBoot配置信息修改服务器配置

SpringBoot &#x1f34c; 掌握基于SpringBoot框架的程序开发步骤 今日目标&#xff1a; 熟练使用SpringBoot配置信息修改服务器配置 1 配置文件 1.1 配置文件格式 我们现在启动服务器默认的端口号是 8080&#xff0c;访问路径可以书写为 http://localhost:8080/books/1在…

【Go实战 | 电商平台】(6) 用户信息修改

文章目录 写在前面1. 路由注册2. 函数编写2.1 service层2.2 api层 3. 服务编写4. 验证 写在前面 由于用户的登录涉及到了身份这一方面的认证&#xff0c;所以我们就可以通过JWT进行用户的鉴权&#xff0c;以确认用户的身份。 1. 路由注册 编写用户更新的请求路由 authed.PUT(…

github使用教程(二)【保姆级】{github desktop教程,github desktop的安装和配置}

下载github desktop 下载github desktop&#xff08;不选择Git&#xff0c;因为这个对于我这个初学者还有点复杂&#xff09; 官方下载地址&#xff1a;GitHub Desktop | Simple collaboration from your desktop github desktop setup 点击这个程序&#xff0c;登录你的gi…

使用github仓库

使用github仓库 一 创建仓库 1.注册github账户&#xff0c;登录后&#xff0c;点击"New respository " 2.在新页面中&#xff0c;输入项目的名称&#xff0c;勾选’readme.md’&#xff0c;点击’create repository’ 3.添加成功后&#xff0c;转到文件列表页面.…

GitHub使用指南——建立仓库、建立文件夹、上传图片详细教程

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 记录笔记&#xff0c;不能少了图片的解释&#xff0c;不知你是否是这样&#xff0c;反正我是比价喜欢有图片的说明&#xff0c;图片能够使得内容更加详细。 这篇博文就来…

gitHub使用记录

前言 之前一直用的都是Bitbucket&#xff0c;虽然gitHub很早就开通了&#xff0c;但是一直没有用它&#xff0c;今天算是第一次用吧。在配置上遇到了一些问题&#xff0c;在这里记录下来和大家一起分享。 什么是gitHub github是一个基于git的代码托管平台&#xff0c;付费用…

Linux使用GitHub

一、GitHub GitHub是一个面向开源及私有软件项目的托管平台&#xff0c;因为只支持git 作为唯一的版本库格式进行托管&#xff0c;故名GitHub 我们一直用GitHub作为免费的远程仓库&#xff0c;如果是个人的开源项目&#xff0c;放到GitHub上是完全没有问题的。其实GitHub还是…

MATLAB绘图颜色、线型设置

Matlab画图线型、符号及颜色汇总 Matlab基础之plot、plotyy的格式设置&#xff08;坐标&#xff0c;刻度&#xff0c;坐标值&#xff0c;不均匀的坐标轴显示&#xff09; Matlab画图常用的符号和颜色

Matlab plot画图线型、符号及颜色

一、画图线型、标记符、颜色的说明 来个简单的例子 figure,plot(Seg1,SS1_QJ1,k);hold on plot(Seg1,SS1_QJ1,ks) plot(Seg1,Q1*ones(length(Seg1)),r) xlabel(\bf{安装角}(),FontSize,10.508) %\bf是加粗的意思 %xlabel(\fontsize{10.508}\fontname{黑体}安装角\fontname{…

MATLAB 线型图

MATLAB 线型图 基本设置 线形 - Solid line (default) -- Dashed line : Dotted line -. Dash-dot line颜色 r Red g Green b Blue c Cyan m Magenta y Yellow k Black w White数据点的形状 Plus sign o Circle * Asterisk . Point x Cross s…