Loading......
接下来我们开始完成详细的用户注册与登录;
用户注册思路:
- 获取用户提交内容
- 数据验证
- 业务验证
- 验证 email 是否存在
- 验证 username 是否唯一
- 创建用户
- 密码加密
- User model 存储数据库
- 创建成功
- 创建 token
- 返回数据
- 整体捕获异常 next (error)
接下来我们按照架构一步步实现:
我们将controller 中的 users.js 中的创建用户进行修改;
引入资源:
按照模板依次进行:
完成之后,在终端启动服务;在 postman 中模拟数据的 get 请求以及 post 请求获取数据。
详细代码:
users.js
const { validateCreateUser } = require("../utils/validate/user_validate");
const HttpException = require("../exceptions/http_expetion");
const User = require('../models/user')
const {md5Password} = require('../utils/md5')
const {sign} = require('../utils/jwt')
// 创建用户
module.exports.createUser = async (req, res,next) => {
try {
let { username, password, email } = req.body.user;
// 数据校验
let { error, validate } = validateCreateUser(username, password, email);
if (!validate) {
throw new HttpException(422, "用户提交验证数据失败!!!", error);
}
//业务验证
//验证email是否存在
const exisUser = await User.findByPk(email)
if (exisUser) {
throw new HttpException(422, "用户邮箱已存在!!!", 'email 存在');
}
//创建用户
//密码加密
const md5PWD = await md5Password(password)
//User model 存储数据库
const user = await User.create({
username,
password:md5PWD,
email
})
//创建成功
if (user) {
console.log(user);
//创建token
let data ={}
data.username = username
data.email = email
data.token = await sign(username,email)
data.bio = null
data.avatar = null
//返回数据
res.status(201)
.json({
status:1,
data,
message:'创建用户成功'
})
}
//整体异常捕获
} catch (error) {
next(error)
}
};
//获取用户
module.exports.getUser = async (req, res) => {
res.json({
status: 200,
message: "success",
data: {
code: 1,
message: "请求数据成功",
data: {
name: "gt",
age: 20,
},
},
});
};
未完待续......