快速验证器无效电子邮件

问题描述

我正在尝试做一个注册登录系统,我正在使用快速验证器来检查用户输入

这是代码

registerController.js

const {validationResult} = require('express-validator');

let getRegisterPage = (req,res) =>{
    return res.render('register.ejs',{errors : req.flash("errors")});
    
};

let createNewUser = async (req,res) =>{
        let errorArr = [];
        let validationErrors = validationResult(req);
        if(!validationErrors.isEmpty()){
            let errors = Object.values(validationErrors.mapped());
            errors.forEach((item) =>{
                errorArr.push(item.msg);
            });
            req.flash("errors",errorArr);
            return res.redirect("/register");
        }   
        console.log(req.body);
};

module.exports = {
    getRegisterPage : getRegisterPage,createNewUser : createNewUser

};

authValidation.js

let {check} = require('express-validator');

let validateRegister = [

check("email","Invalid email").isEmpty().trim(),check("password","Invalid password. password must be at least 2 characters long").isLength( {min : 2} ),check("confirmPassword","confirmation password does not match password").custom((value,{req}) =>{
    value == req.body.password;
})
];

module.exports = {
    
    validateRegister : validateRegister

};

问题是:

  • 我收到一条即时消息:“电子邮件无效”,即使它是正确的电子邮件 当我尝试不输入任何电子邮件时,Flash 消息没有显示,所以它在这里做相反的事情

  • 第二个问题是,当我输入不匹配的密码和确认密码时,它显示消息“确认密码密码不匹配”,这很好,但是当我尝试通过输入匹配的密码和确认密码来修复它时,它仍然显示我是那个错误信息或应用程序崩溃 ?

请帮帮我

解决方法

您明确检查电子邮件是否为空。如果不是,则会出现错误。 你会想要这个: check("email","Invalid email").isEmail()

它检查电子邮件字段是否是有效的电子邮件,如果不是,则抛出错误。

,

我解决了这个问题

authValidation.js 文件:


let validateRegister = [

check("email","Invalid email").isEmail(),check("password","Invalid password. password must be at least 2 characters long").isLength( {min : 2} ),check("confirmPassword","confirmation password does not match password").custom((value,{req}) =>{
   
    return value === req.body.password;
})
];

module.exports = {
    
    validateRegister : validateRegister

};```