验证数组何时包含特定值

Validate when array contains specific value

我想使用类似的规则,但我在为 Joi 验证库的 when 条件填写 "is" 规则时遇到了一些问题。

let schema = {
    field1: Joi.array().items(Joi.string().valid('v1', 'v2')),
    field2: Joi.when("field1", {
        is: // if field1 contains at least 'v1',
        then: Joi.object().keys(...),
        otherwise: Joi.forbidden()
    }
}

您可以通过列出所有允许的类型来使用 array.items。如果给定类型是 .required() 则数组中必须有一个匹配项: joi API reference

let schema = {
    field1: Joi.array().items(Joi.string().valid('v1', 'v2')),
    field2: Joi.when("field1", {
        is: Joi.array().items(Joi.string().valid('v1').required(), Joi.string().valid('v2'))
        then: Joi.object().keys(...),
        otherwise: Joi.forbidden()
    }
}