我需要在nestjs微服務中實作dto驗證 nestjs TCP微服務中dto的完整實作**強文**
檢查匯款人.dto.ts
```打字稿
從“類驗證器”匯入{IsNotEmpty,IsString};
匯出類 checkRemitterDto {
@IsNotEmpty()
@IsString()
只讀匯款人編號:字串;
@IsNotEmpty()
@IsString()
用戶ID:字串
}
```
應用程式。控制器
```打字稿
從“./dto”匯入 {checkRemitterDto}
@MessagePattern({ cmd: "checkRemitter" })
異步 checkRemitterData(資料:checkRemitterDto){
嘗試{
//一些代碼
}趕上(錯誤){
控制臺日志(錯誤)
回傳新的 HttpException(error.response.data, error.response.status);
}
}
```
錯誤=>
BadRequestException:錯誤請求例外
在 ValidationPipe.exceptionFactory (/home/saranjith/Desktop/ECAPS/yesbank-dmtsor-service/node_modules/@nestjs/common/pipes/validation.pipe.js:90:20)
在 ValidationPipe.transform (/home/saranjith/Desktop/ECAPS/yesbank-dmtsor-service/node_modules/@nestjs/common/pipes/validation.pipe.js:66:30)
在 processTicksAndRejections (node:internal/process/task_queues:95:5)
在 resolveParamValue (/home/saranjith/Desktop/ECAPS/yesbank-dmtsor-service/node_modules/@nestjs/microservices/context/rpc-context-creator.js:106:31)
在異步 Promise.all(索引 0)
在 pipesFn(/home/saranjith/Desktop/ECAPS/yesbank-dmtsor-service/node_modules/@nestjs/microservices/context/rpc-context-creator.js:108:13)
在/home/saranjith/Desktop/ECAPS/yesbank-dmtsor-service/node_modules/@nestjs/microservices/context/rpc-context-creator.js:43:17
在/home/saranjith/Desktop/ECAPS/yesbank-dmtsor-service/node_modules/@nestjs/microservices/context/rpc-proxy.js:11:32
在 ServerTCP.handleMessage (/home/saranjith/Desktop/ECAPS/yesbank-dmtsor-`在此處輸入代碼`service/node_modules/@nestjs/microservices/server/server-tcp.js:62:54)`在此處輸入代碼`
uj5u.com熱心網友回復:
微服務使用 RpcException 類。您可以在 main.ts 中更改 ValidationPipe 例外工廠并且您應該拋出 RpcException 而不是 http expception
主.ts
async function bootstrap() {
const microserviceApp = await NestFactory.createMicroservice<MicroserviceOptions>(AppModule, {
transport: Transport.REDIS,
// ...
});
// ...
microServiceApp.useGlobalPipes(new ValidationPipe({
transform: true,
whitelist: true,
forbidNonWhitelisted: true,
forbidUnknownValues: true,
disableErrorMessages: true,
exceptionFactory: (errors) => {
return new RpcException(errors);
}
}));
// ...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/533803.html
