繁体   English   中英

具有不同模式的对象数组 - JOI

[英]Array of objects with different schemas - JOI

我的应用程序上目前有以下架构:

Joi.object().keys({
  users: Joi.array().items(mySchema)
})

所以我可以获取一组用户并验证他们。 但是现在我需要为每个对象使用不同的模式。

有没有办法我可以做这样的事情:

Joi.object().keys({
  users: [
    Joi.object().keys(mySchemaForUserOne),
    Joi.object().keys(mySchemaForUserTwo),
    // ...
  ]
})

给你~

Joi.object().keys({
  users: Joi.array().items(
    Joi.alternatives()
      .conditional('.type', {
        switch: [{
          is: 'mySchemaForUserOne',
          then: Joi.object({ ... }),
        }, {
          is: 'mySchemaForUserTwo',
          then: Joi.object({ ... }),
        }],
      })
  )
})

您可以在此处查看文档 => Joi 条件 API

您可以通过列出所有允许的类型来使用array.items 如果给定类型是.required()则数组中必须有匹配项: joi API 参考

users: Joi.array().items(Joi.object().keys(mySchemaForUserOne).required(),
                         Joi.object().keys(mySchemaForUserTwo).required(),
                         // ...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM