• 博客项目实战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');

    }
     
    添加用户完成
  • 相关阅读:
    阅读《构建之法》1-5章
    构建之法第8,9,10章
    实验5-封装与测试2
    第六次作业-my Backlog
    保存内容
    实验四-单元测试
    实验3—修改版
    做汉堡-57号
    实验3-2
    201306114357-实验3-C语言
  • 原文地址:https://www.cnblogs.com/ericblog1992/p/13099891.html
Copyright © 2020-2023  润新知