网站搜索

typescript - NestJS:管道未应用于绑定的请求体参数


我正在尝试找到一种体面的方法来为同一个对象以不同的方式验证模式。这就是我如何熟悉来自 class-validator 的 groups validationOption 的。

根据 NestJS Body 参数文档,它说明

也将管道应用于绑定的主体参数。

我有一个 Event 模型,它有一个 status 属性。在创建 Event (POST - /events) 时,status 是 可选的,但在更新 status (PATCH - /events/:id/status) 时,它是 必填的。

@Entity("events")
export class Events {
  @IsString({ groups: ["updateStatus"] })
  @IsNotEmpty({ groups: ["updateStatus"] })
  @IsOptional({ groups: ["createOne"] })
  @IsEnum(EventStatus, { groups: ["updateStatus"] })
  @Column({
    type: "enum",
    enum: EventStatus,
    default: EventStatus.OPEN
  })
  status: EventStatus;

  // ...other properties also.
}

当我向 status 提交更新请求时,我提供了 @Body,将 'status' 作为参数,并将 ValidationPipe 作为管道选项。

@Patch('/:id/status')
async updateStatus(
    @Body(
         'status',
         new ValidationPipe({
             groups: ['updateStatus'],
         }),
    )
    status: EventStatus
) {
// Business logic.
}

但是使用这段代码,它并没有根据提到的分组验证 status 字段。有人知道我做错了什么吗?任何帮助都将不胜感激。