假设我有以下用json表示的对象:
{
"name": "Joe",
"childrens": [
{
"name": "Marie",
"childrens": [
{
"name": "Paul"
}
]
},
{
"name": "Nick",
"childrens": [
]
}
]
}
如何创建一个模式来验证包含同一对象列表的对象?
您可以使用Joi.lazy()
方法来实现递归模式,如:
const Person = Joi.object({
name: joi.string().required(),
children: joi.array().items(joi.lazy(() => Person).description('My Schema'))
});
在较新版本的Joi中,必须使用Joi.link()
才能链接模式的id
。
const personSchema = joi
.object({
name: joi.string().required(),
children: joi.array().items(joi.link("#person"))
})
.id("person");
注意,我已将您的childrens
属性重命名为children
。