Node.js Express中实现删除用户功能的路由配置与代码解析

作者:墨池时间:2026-10-23 07:43:53浏览:540

本文详细讲解在Node.js Express框架中如何实现删除用户的功能。内容涵盖Mongoose用户模型定义、Express路由控制器逻辑、AngularJS前端页面交互以及路由注册配置。通过完整代码示例,展示如何从数据库查找用户、执行删除操作并处理会话状态跳转,帮助开发者掌握后端用户管理核心逻辑。

定义用户数据模型

首先,我们需要定义用户的数据模型。在users_model.js文件中,利用Mongoose库创建Schema结构,包含username(设置为唯一字符串)、email、color以及经过哈希处理的密码字段hashed_password。最后通过mongoose.model将UserSchema注册为User模型,以便后续在数据库中操作用户数据。


var mongoose=require('mongoose'),
Schema=mongoose.Schema;
var UserSchema=new Schema({
username:{type:String,unique:true},
email:String,
color:String,
hashed_password:String
});
mongoose.model('User',UserSchema);

实现删除用户控制器逻辑

接下来处理服务器端的删除逻辑。在users_controller.js中,引入crypto模块用于密码哈希,并获取User模型。定义hashPW函数使用SHA256算法生成密码摘要。重点实现deleteUser路由处理函数:首先通过req.session.user查找当前用户,若找到则调用user.remove()执行删除;删除成功后销毁会话并重定向至登录页。若未找到用户,则设置错误消息同样销毁会话并跳转至登录页。


var crypto=require('crypto');
var mongoose=require('mongoose'),User=mongoose.model('User');
function hashPW(pwd){
return crypto.createHash('sha256').update(pwd).
digest('base64').toString();
}
//实现删除用户路由
exports.deleteUser=function(req,res){
User.findOne({_id:req.session.user})
.exec(function(err,user){
if(user){
user.remove(function(err){
if(err){
req.session.msg=err;
}
req.session.destroy(function(){
res.redirect('/login');
});
});
}else{
req.session.msg="User Not Found!";
req.session.destroy(function(){
res.redirect('/login');
});
}
});
};

构建前端删除交互页面

前端页面user.html使用了AngularJS框架(版本1.5.8)来构建用户修改界面。页面包含一个表单容器,绑定到myController控制器。除了保存数据的表单外,还提供了一个专门用于删除用户的POST表单,提交地址指向/user/delete。页面底部通过<%=msg%>和{{error}}分别显示服务器端返回的消息和客户端错误信息。


<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="UTF-8">
<title>用户修改</title>
<link rel="stylesheet"type="text/css" href="/static/css/styles.css" rel="external nofollow" />
<script src="https://cdn.staticfile.org/angular.js/1.5.8/angular.min.js"></script>
<script src="/static/js/my_app.js"></script>
</head>
<body>
<div class="form-container" ng-controller="myController">
<p class="form-header">用户修改</p>
<form method="POST" action="/user/update">
<label>用户名:</label>
<input type="text" name="username" ng-model="user.username" disabled><br>
<label>Email:</label>
<input type="email" name="email" ng-model="user.email"><br>
<label>肤色:</label>
<input type="text" name="color" ng-model="user.color"><br>
<input type="submit" value="Save">
</form>
</div>
<form method="POST" action="/user/delete">
<input type="submit" value="删除用户">
</form>
<hr><%=msg%>
<hr>{{error}}
</body>
</html>

配置Express路由规则

在routes.js中配置Express服务器的路由规则。引入users控制器模块,并设置静态资源目录(/static和/lib)。关键步骤是使用app.post('/user/delete', users.deleteUser)将POST请求到/user/delete路径的请求映射到控制器中定义的deleteUser函数,从而完成Web请求的路由分发。


var crypto=require('crypto');
var express=require('express');
module.exports=function(app){
var users=require('./controllers/users_controller');
app.use('/static',express.static('./static')).
use('/lib',express.static('../lib')
);
app.post('/user/delete',users.deleteUser);

完成上述代码配置后,页面将显示相应的操作界面。用户可以在修改信息的表单下方看到“删除用户”按钮。点击该按钮提交POST请求后,服务器将执行删除逻辑,并根据结果重定向到登录页面或显示错误信息。

定义用户数据模型

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

作者最新文章