博客项目实战5

 

 

添加字段验证

 

 

//引入 joi 模块
const Joi = require('joi');
module.exports = async(req, res) => {

    // 定义规则对象
    const schema = {
        username: Joi.string().min(2).max(12).required().error(new Error('用户名不符合规则...')),
        email: Joi.string().email().required().error(new Error('邮箱格式不符合要求...')),
        password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}/).required().error(new Error('密码格式不符合要求...')),
        role: Joi.string().valid('normal', 'admin').required().error(new Error('角色值非法')),
        state: Joi.number().valid(0, 1).required().error(new Error('状态值非法...'))
    };

    try {
        // 实施验证
        await Joi.validate(req.body, schema);
    } catch (e) {
        //  验证没有通过 
        res.redirect(`/admin/user-edit?message=${e.message}`);

    }

    res.send(req.body);
}
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//引入 joi 模块
const Joi = require('joi');
// 引入用户集合的构造函数
const { User } = require('../../model/user');
// 引入加密模块
const bcrypt = require('bcrypt');
module.exports = async(req, res) => {

    // 定义规则对象
    const schema = {
        username: Joi.string().min(2).max(12).required().error(new Error('用户名不符合规则...')),
        email: Joi.string().email().required().error(new Error('邮箱格式不符合要求...')),
        password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}/).required().error(new Error('密码格式不符合要求...')),
        role: Joi.string().valid('normal', 'admin').required().error(new Error('角色值非法')),
        state: Joi.number().valid(0, 1).required().error(new Error('状态值非法...'))
    };

    try {
        // 实施验证
        await Joi.validate(req.body, schema);
    } catch (e) {
        //  验证没有通过 
        return res.redirect(`/admin/user-edit?message=${e.message}`);
    }

    // 根据邮箱地址查询用户是否存在
    let user = await User.findOne({ email: req.body.email });
    // 如果存在 
    if (user) {
        return res.redirect(`/admin/user-edit?message=邮箱地址被占用...`);
    }

    // 对密码进行加密处理   生成随机字符串  bcrypt
    const salt = await bcrypt.genSalt(10);
    // 加密
    const password = await bcrypt.hash(req.body.password, salt);
    // 替换密码
    req.body.password = password;
    // 将用户信息添加到数据库中
    await User.create(req.body);
    res.redirect('/admin/user');

}
 
添加用户完成

 

posted @ 2020-06-12 15:51  EricBlog  阅读(148)  评论(0编辑  收藏  举报