[英]How to validate sum of refs in Joi
如何验证以下两个参考的总数? 我更希望custom
在total
,但不确定在使用Joi.ref
时如何在 custom 中获取refs
的值。
我可以执行以下操作并将custom
挂在整个验证架构上,但更愿意将其附加到total
。
我不想使用表达式()
我不想按照这个答案更改架构结构。
const widgetValidator = Joi.object({
a: Joi.number().integer().min(0).required(),
b: Joi.number().integer().min(1).required(),
total: Joi.number().integer().min(1).required(),
}).custom((value: {a: number; b: number; total: number;}, helpers) => {
if (value.total !== value.a + value.b) {
throw new Error('invalid balance calculation');
}
return value;
},
);
当您在属性上安装custom
时,获取整个对象值会有点困难。 您必须从助手的状态中获取它:
Joi.object({
a: Joi.number().integer().min(0).required(),
b: Joi.number().integer().min(1).required(),
total: Joi.number().integer().min(1).required().custom((value, helpers) => {
const { a, b } = helpers.state.ancestors[0];
if (value !== a + b) {
throw new Error('invalid balance calculation');
}
return value;
},
)
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.