我有一个这样的嵌套模式设置:
var schema = Joi.object().keys({
first_name: Joi.string().required(),
last_name: Joi.string().required(),
address: Joi.object().keys({
street: Joi.string().required(),
zip: Joi.number().required(),
state: Joi.string().required(),
country: Joi.string().required()
}).required(),
})
var options = { abortEarly: false };
var result = Joi.validate({}, schema, options);
运行时,result.error
将返回消息:
[
{message: '"first_name" is required', path: 'first_name' },
{message: '"last_name" is required', path: 'last_name' },
{message: '"address" is required', path: 'address' }
]
如您所见,该address
字段未扩展。我不想收到缺少整个地址字段的消息。相反,我想了解地址架构中缺少的各个项目。当我没有address
明确要求时,其中的项目根本不会得到验证required()
。嵌套字段验证似乎仅适用于整个嵌套模式对象级别,而不适用于模式级别中的单个项目。如何使其与单个嵌套模式项一起使用?