使用类验证器的高级条件(可能)?

时间:2020-02-14 10:03:29

标签: typescript nestjs ajv class-validator

我有TypeScript NestJS项目。

我需要验证传入DTO到我的API。可以将其描述为“创建项目”,其中我们具有建筑物的类型(房屋,公寓,花园),并根据该类型我们需要定义:

  • 房屋:包括房间在内的楼层
  • 单位:客房
  • 花园:什么都没有(这是一个“房间”)

房屋类型示例:

{
  type: HOUSE,
  floors: [
    {
      name: "1st floor",
      rooms: [
        {
          name: "bedroom"
        }
      ]
    }
  ]
}

平面类型的示例:

{
  type: FLAT,
  rooms: [
    {
      name: "bedroom"
    }
  ]
}

我过去是在AJV的帮助下完成的,但是现在,当我们迁移到NestJS时,我们开始使用class-validator

我的问题是,如果我可以在class-validator中设置那些高级条件(例如,当类型为FLAT时,则仅期望ROOMS,而不能期望FLOORS)?

1 个答案:

答案 0 :(得分:1)

通过class-validator,您可以选择Conditional ValidationGroup Validation,也可以始终创建自定义管道并使用AJV。对于条件验证,您可以基于type创建验证,然后让class-validator负责其余工作