我有一个包含登录表单的简单代码。我已为登录输入字段启用服务器端验证。代码如下:
const validator = require('validator')
const isEmpty = require('./util')
const validateLoginInput = (data) => {
let errors= {}
data.email = !isEmpty(data.email) ? data.email : '';
data.password = !isEmpty(data.password) ? data.password : '';
if(validator.isEmpty(data.email))
errors.email= "Email is required"
if(validator.isEmpty(data.password))
errors.password= "Password is required"
if(!validator.isEmail(data.email))
errors.email= "Email Incorrrect"
return{
errors,
isValid: isEmpty(errors)
}
}
并且使用它的api是:
exports.registerPatient = (req,res) =>{
const {isValid, errors} = validateRegisterPatient(req.body)
if(!isValid)
return res.status(400).json(errors)
现在,当我在邮递员上运行此后端代码时,仅提供密码而不提供电子邮件,我希望收到错误"Email is required"
,但不幸的是,我碰到了错误"Email Incorrect"
。有任何修复程序吗?
您的最后一个验证将覆盖第一个验证。为了防止这种情况,您可以使用:
const validator = require('validator')
const isEmpty = require('./util')
const validateLoginInput = (data) => {
let errors= {}
data.email = !isEmpty(data.email) ? data.email : '';
data.password = !isEmpty(data.password) ? data.password : '';
// Email validations (2 of them)
if(validator.isEmpty(data.email))
errors.email= "Email is required"
else if(!validator.isEmail(data.email))
errors.email= "Email Incorrrect"
// Password validations (Only 1 validation)
if(validator.isEmpty(data.password))
errors.password= "Password is required"
return{
errors,
isValid: isEmpty(errors)
}
您可以使用双感叹号:
let email='';
console.log(!!email);
email = null
console.log(!!email);
email = undefined ;
console.log(!!email);