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

Joi validation Error message for required param inside object

首先大家好,

我使用 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 是如何显示这个错误的吗?

在您的情况下,默认消息将与您提到的相同。对于 "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]);
    }    
});

}