我想覆盖ValidationPipe
来更改它的异常格式我可以使用构造函数参数选项来完成这项工作,但应该在每个微服务上单独完成。然后我选择了这种方法
这就是我所做的:
export class ClassValidationPipe extends ValidationPipe {
async transform(value: any, metadata: ArgumentMetadata): Promise<any> {
console.log('>>>>> This log happens');
return super.transform(value, metadata);
}
exceptionFactory = (errors: ValidationError[]) => {
console.log('>>>>> But never reaches this log!');
return new HttpException('My custom error!', 400);
};
}
但上面的函数从未执行过,输出始终与原始ValidationPipe一样,就像它从未被覆盖过一样。
我用这个管子是这样的:
app.useGlobalPipes(new ClassValidationPipe());
我遇到了同样的问题,可能有不同的原因,但我的原因是使用了另一个(默认(globalPipe。所以我需要删除:
app.useGlobalPipes(new ValidationPipe());
然后自定义的一个变得活跃起来:
app.useGlobalPipes(
new ValidationPipe({
exceptionFactory: validationExceptionFactory,
}),
);