问题描述
我正在尝试做一个注册和登录系统,我正在使用快速验证器来检查用户输入
这是代码
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
};```