Estoy tratando de enviar una llamada de función directa y configuré el DTO, pero no funcionó. aquí está el código (Enviar es mi DTO) en mi controlador:
@Post('/Send') async SendE(body: Send) { const mail = await this.messageProducer.SendMessage(body); return mail; }Hago una llamada directa a la función SendE aquí:
@MessagePattern('Notification') async readMessage(@Payload() message: any, @Ctx() context: KafkaContext) { const messageString = JSON.stringify(context.getMessage().value); const toJson = JSON.parse(messageString); await this.SendE(toJson); }Quiero que el DTO "Enviar" pueda validar el "toJson", pero no funciona. así es como se ve mi DTO:
export class Send{ @IsString() @ApiProperty({ required: true }) MessageID: string; }así es como se ve el toJson:
{ MessageID: 123 }Si envío un MessageID que no es una cadena, puede pasar el DTO. Por favor ayuda
Debe habilitar la tubería de validationPipe para habilitar los DTO. Hay 2 enfoques según los documentos de NestJS . ValidationPipe se exporta desde @nestjs/common .
main.ts : // validate incoming requests app.useGlobalPipes( new ValidationPipe({ transform: true, }) ); @Post() @UsePipes(new ValidationPipe({ transform: true })) async create(@Body() createCatDto: CreateCatDto) { this.catsService.create(createCatDto); }