无法重写Nestjs ValidationPipe的exceptionFactory属性



我想覆盖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,
}),
);

相关内容

  • 没有找到相关文章

最新更新