如何使用一个字段中的值来验证JOI模式中的另一个字段



我正在尝试使用JOI自定义创建模式。

车身型号:

const type body = {
level: number;
statistics: Array<{
name: string;
value: number;
}>;
}

我希望统计值小于级别乘以某个值。同时,我想保留所有的基本验证规则。

我的模式现在看起来像这样:

const StatisticsValidator = Joi.object().keys({
level: Joi.number().required().min(1),
statistics: Joi.array.items(Joi.object().keys({
type: Joi.string(),
value: Joi.number().required().custom((statValue) => {
Joi.ref('level', {
adjust: (levelValue) => {
console.log(levelValue;
}}}),
});

现在我只是想打印水平值,这样我就知道我可以用它来计算我的最大值,因为以前的很多方法都不起作用,但我该如何使用它呢?

我试图直接在统计数据上使用Join.custom,当使用Join.ref时,我也试图用"引用级别字段$"以及"&";,我阅读了关于自定义、引用、对象、方法等的Joi文档(https://joi.dev/api/?v=17.6.0#anycustommethod-description(,我看了YT的教程,仍然不知道如何使用level值。

有人能帮忙吗?

const StatisticsValidator = Joi.object().keys({
level: Joi.number().required().min(1),
statistics: Joi.array.items(Joi.object().keys({
type: Joi.string(),
value: Joi.number().max(Joi.ref('....level', { adjust: (levelValue) => {
console.error(levelValue) }).required(),          
}}}),
});
  1. 结果我需要在引用的字段名称前面使用4个点
  2. 我使用console.error来显示值
  3. 我使用.max()是因为最终我想验证值字段的最大值
  4. 最初我打算使用.custom(),因为有人给了我一个提示,在这种情况下,对象及其所有字段将被传递给方法,然后我就可以引用我想要的字段

最新更新