JOI验证对象内所需参数的错误消息

时间:2018-06-21 14:26:44

标签: node.js express joi

首先,您好

我使用Node,Express和Mongoose开发API。我还使用Joi参数验证来验证我的参数,但是当缺少对象内部所需的参数时,错误消息会出现问题。

请参见以下示例:

我的param-validation.js

body: {
        nameBusiness: Joi.string().required(),
        street: Joi.string().required(),
        cityName: Joi.string().required(),
        zipCode: Joi.number().required(),
        account: Joi.object({
            birthday: Joi.number().required(),
            firstName: Joi.string().required(),
            lastName: Joi.string().required(),
            email: Joi.string().regex(/^[^\s@]+@[^\s@]+\.[^\s@]+$/).required(),
        }).required()
    }

我的问题是,当我没有字段“ firstName”的情况下发出请求时,错误是: "\"firstName\" is required,但我认为错误尚不清楚:"\"account.firstName\" is required

有人知道Joi如何显示此错误?

1 个答案:

答案 0 :(得分:1)

在您的情况下,默认消息将与您提到的相同。对于完整路径,例如“ account.firstName”,您可以在错误对象中查找路径键。

您可以在“ validationErrorObject”中找到他的属性,例如:-

if(validationResult.error){
validationResult.error.details.forEach(function(error){
    if(error.path.length > 1){
        console.log(error.path.join("."));
    }else{
      console.log(error.path[0]);
    }    
});

}