返回
手把手教你实现Vue3+TS+NodeJS后台管理系统(七)
前端
2023-12-18 14:43:22
如何构建强大的 Vue3 + TypeScript + Node.js 后台管理系统:用户管理
在构建健壮的后端系统时,用户管理是一个至关重要的方面。本文将深入探讨如何使用 Vue3、TypeScript 和 Node.js 构建一个用户管理模块,包括获取分页用户列表和修改用户信息。
获取用户分页列表
分页是处理大量数据时的常见技术。以下是如何实现分页用户列表:
后端(Node.js):
app.get('/api/user/list', async (req, res) => {
const { page, size } = req.query;
const users = await User.findAndCountAll({
offset: (page - 1) * size,
limit: size
});
res.json({
code: 200,
data: users
});
});
前端(Vue3 + TypeScript):
import axios from 'axios';
export default {
data() {
return {
userList: []
};
},
created() {
this.getUserList();
},
methods: {
getUserList() {
axios.get('/api/user/list', {
params: {
page: 1,
size: 10
}
}).then(res => {
this.userList = res.data.data;
});
}
}
};
修改用户
修改用户信息是用户管理中的另一个关键功能:
后端(Node.js):
app.post('/api/user/update', async (req, res) => {
const { id, username, password, email } = req.body;
const user = await User.findByPk(id);
if (user) {
user.username = username;
user.password = password;
user.email = email;
await user.save();
res.json({
code: 200,
data: user
});
} else {
res.json({
code: 404,
message: '用户不存在'
});
}
});
前端(Vue3 + TypeScript):
import axios from 'axios';
export default {
data() {
return {
user: {}
};
},
created() {
this.getUser();
},
methods: {
getUser() {
axios.get('/api/user/info', {
params: {
id: this.$route.params.id
}
}).then(res => {
this.user = res.data.data;
});
},
updateUser() {
axios.post('/api/user/update', {
id: this.user.id,
username: this.user.username,
password: this.user.password,
email: this.user.email
}).then(res => {
if (res.data.code === 200) {
this.$message.success('修改成功');
this.$router.push('/user/list');
} else {
this.$message.error(res.data.message);
}
});
}
}
};
常见问题解答
1. 如何设置分页大小?
分页大小可以通过 size
查询参数进行配置,例如 /api/user/list?size=20
。
2. 如何处理不存在的用户?
后端接口应返回 404 状态代码和错误消息,前端应相应地处理。
3. 修改密码时如何确保安全性?
使用哈希函数对密码进行加密,避免明文存储。
4. 如何验证用户输入?
在前端使用表单验证或数据验证库,在后端使用数据模型验证。
5. 如何优化用户列表加载性能?
使用缓存或懒加载来优化大型用户列表的加载时间。
结论
本文介绍了如何在 Vue3 + TypeScript + Node.js 后台管理系统中实现用户管理功能。通过遵循本文中的步骤,您可以构建一个强大的用户管理模块,有效地管理用户数据。请随时发表评论或问题,我们将尽力帮助您。