我需要有关如何使用JOI验证来验证嵌套json对象的某些字段的帮助。在我的示例中,我有一个包含两个子对象的对象,即z
和clientObj
。我只想验证必填的agentObj
字段,但不想验证其余字段。如果仅提及该字段,则通过删除我的架构和username
函数中的所有其他字段,我将收到422错误。代码如下:
joi.validate()
答案 0 :(得分:2)
您可以使用{ allowUnknown: true }
const data = {
clientObj: {
username: 'username',
otherProp: 'otherProp'
},
agentObj: {
otherProp2: 'otherProp2'
}
};
const schema = Joi.object().keys({
clientObj: Joi.object().keys({
username: Joi.string().required()
})
});
Joi.validate(data, schema, { allowUnknown: true }, (err) => {
console.log(`err with allowUnknown: ${err}`);
});
Joi.validate(data, schema, { allowUnknown: false }, (err) => {
console.log(`err without allowUnknown: ${err}`);
});
<script src="https://cdn.jsdelivr.net/npm/joi-browser@13.4.0/dist/joi-browser.min.js"></script>