Node Js Join验证包含相同对象列表的对象



假设我有以下用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

最新更新