在Joi模式中,我想访问此模式中的另一个引用的值以在Joi.errors()
函数中打印?
我尝试登录.error(() => Joi.ref('name'))
,但它给了我'ref:name'
在下面的示例中,如果数量验证失败,则输出将为“需要'ref:name'的商品数量”。我想要的是输出article.name
的实际值。
const article = Joi.object({
name: Joi.string()
.max(128)
.required(),
quantity: Joi.number()
.integer()
.positive()
.required()
.error(() => `Article quantity for '${Joi.ref('name')}' is required.`),
});
答案 0 :(得分:0)
我认为Joi
不支持此功能,您可以自己提取值。
function validateInput(input) {
const article = Joi.object({
name: Joi.string()
.max(128)
.required(),
quantity: Joi.number()
.integer()
.positive()
.required()
.error(() => `Article quantity for '${input.name}' is required.`),
});
return article.validate(input);
}
但是请记住,如果将abortEarly选项设置为false
而未设置input.name
,则错误消息将变得有点难看:
validateInput({}); // "quantity" fails because [Article quantity for 'undefined' is required.]