如何使用 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()
});

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

解决方法

您的 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'
        }
    ]
}