1

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

根据 NestJS Body 参数文档,它指出

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

我有一个具有状态属性的事件模型。在创建事件(POST - /events)时,状态是可选的,但在更新状态时(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.
}

当我对状态提出更新请求时,我提供@Bodywith'status'作为参数和ValidationPipe作为管道选项。

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

但是使用此代码,它不会根据提到的组验证状态字段。任何人都知道我做错了什么。任何帮助将不胜感激。

4

0 回答 0