Nestjs 和类验证器 - 至少一个字段不应为空

her*_*121 2 class-validator nestjs

我有 NestJS API,它有一个用于修改资源的 PATCH 端点。我使用该class-validator库来验证有效负载。在 DTO 中,所有字段都通过@IsOptional()装饰器设置为可选。因此,如果我发送空负载,验证就会通过,然后更新操作就会出错。

我想知道是否有一种简单的方法可以像我一样将所有字段设置为可选,同时确保其中至少一个字段不为空,因此对象不为空。

谢谢!

小智 10

我不知道是否可以使用DTO。为此,我使用管道。像这样:

Injectable()
export class ValidatePayloadExistsPipe implements PipeTransform {
  transform(payload: any): any {
    if (!Object.keys(payload).length) {
      throw new BadRequestException('Payload should not be empty');
    }

    return payload;
  }
}
Run Code Online (Sandbox Code Playgroud)