【发布时间】:2021-02-04 03:07:57
【问题描述】:
我有 NestJS API,它有一个用于修改资源的 PATCH 端点。我使用class-validator 库来验证有效负载。在 DTO 中,所有字段都使用@IsOptional()decorator 设置为可选。因此,如果我发送一个空的有效载荷,验证通过,然后更新操作错误。
我想知道是否有一种简单的方法可以像我一样将所有字段设置为可选,同时确保其中至少一个不为空,因此对象不为空。
谢谢!
【问题讨论】:
我有 NestJS API,它有一个用于修改资源的 PATCH 端点。我使用class-validator 库来验证有效负载。在 DTO 中,所有字段都使用@IsOptional()decorator 设置为可选。因此,如果我发送一个空的有效载荷,验证通过,然后更新操作错误。
我想知道是否有一种简单的方法可以像我一样将所有字段设置为可选,同时确保其中至少一个不为空,因此对象不为空。
谢谢!
【问题讨论】:
我不知道是否可以使用 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;
}
}
【讨论】: