如何打印正确的json错误?

问题描述 投票:0回答:2

我有一个包含登录表单的简单代码。我已为登录输入字段启用服务器端验证。代码如下:

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"。有任何修复程序吗?

node.js
2个回答
0
投票

您的最后一个验证将覆盖第一个验证。为了防止这种情况,您可以使用:

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)
}

-1
投票

您可以使用双感叹号:

let email='';
console.log(!!email);

email = null
console.log(!!email);

email = undefined ;
console.log(!!email);
© www.soinside.com 2019 - 2024. All rights reserved.