繁体   English   中英

如何验证 Joi 中的引用总和

[英]How to validate sum of refs in Joi

如何验证以下两个参考的总数? 我更希望customtotal ,但不确定在使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM