如何使用 joi 验证对象中的对象约束?

How to validate object constraint in a object using joi?

我正在尝试借助 joi 进行对象验证。 我想将对象验证为对象内的约束,例如

let login = {
    value: 0/1,
    slots: [{ label: '', value: '24 hr'}, { label: '', value: '24 hr'}]
}

这里login是一个对象,里面slots也是一个对象。所以如果我像下面这样写

const schema = Joi.object().keys({
 value : Joi.number.required(),
 slots : Joi.string.required()
});

对象数据类型是否正确,或者我应该用 object 数据类型替换 string 数据类型吗? 我想将对象类型验证为约束。

您的 slots 键需要是一个对象数组:

const schema = Joi.object().keys({
    value: Joi.number().required(),
    slots: Joi.array().items(
        Joi.object().keys({
            label: Joi.string().required().allow(''),
            value: Joi.string().required()
        })
    )
})

这样,以下对象将有效:

const obj = {
    value: 1,
    slots: [
        {
            label: '',
            value: '24 hr'
        }
    ]
}