【问题标题】:How to validate object with two max condition on a value in Joi?如何在Joi中的一个值上验证具有两个最大条件的对象?
【发布时间】:2020-03-02 20:59:01
【问题描述】:

我想使用 Joi 验证此对象,条件是:
b 应该大于 2。
b 不能大于 a
b 不能大于600

// valid object
var object = {
    a: 5,
    b: 3
}

// invalid object because b > a
var object = {
    a: 5,
    b: 6
}

我很想建立 Joi 架构

var schema = Joi.object({
    a: Joi.number().integer(),
    b: Joi.number().integer().min(2).max(Joi.ref('a')).max(600)
})

此架构忽略b<=a 条件,因此无效对象也被视为有效。应用所有条件的正确架构应该是什么?

【问题讨论】:

    标签: javascript json validation object joi


    【解决方案1】:

    使用less() 指定值必须小于限制或引用。

    var schema = Joi.object({
        a: Joi.number().integer(),
        b: Joi.number().integer().less(Joi.ref('a')).min(2).max(600)
    })
    

    stackblitz

    【讨论】:

    【解决方案2】:
    var schema = Joi.object({
    a: Joi.number().integer(),
    b: Joi.number().integer().min(2).max(Joi.ref('a')).less(601)
    })
    

    【讨论】:

    • var schema = Joi.object({ a: Joi.number().integer(), b: Joi.number().integer().min(2).less(Joi.ref ('a')).max(600) })
    猜你喜欢
    • 1970-01-01
    • 2020-02-20
    • 2021-09-06
    • 2017-06-04
    • 2014-12-18
    • 2019-10-01
    • 1970-01-01
    • 2016-08-05
    • 2021-12-10
    相关资源
    最近更新 更多