如何验证 Joi 中的引用总和
How to validate sum of refs in Joi
我怎样才能验证下面两个引用的总和?我希望 custom
在 total
上,但不确定在使用 Joi.ref
.
时如何在自定义中获取 refs
的值
我可以执行以下操作并将 custom
挂在整个验证模式之外,但更愿意将其附加到 total
。
我不想用expression()
我不想根据 更改模式结构。
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
时,获取整个对象值会有点困难。您必须从 helpers's states:
获取
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;
},
)
})
我怎样才能验证下面两个引用的总和?我希望 custom
在 total
上,但不确定在使用 Joi.ref
.
refs
的值
我可以执行以下操作并将 custom
挂在整个验证模式之外,但更愿意将其附加到 total
。
我不想用expression()
我不想根据
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
时,获取整个对象值会有点困难。您必须从 helpers's states:
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;
},
)
})