如何验证nestjs中的直接函数调用



我正在尝试发送一个直接函数调用,并设置了DTO,但无法工作。这是我的控制器中的代码(Send是我的DTO(:

@Post('/Send')
async SendE(body: Send) {
const mail = await this.messageProducer.SendMessage(body);
return mail;
}

我在这里直接调用SendE函数:

@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);
}

我想要";发送";DTO可以验证";toJson";,但它不起作用。我的DTO是这样的:

export class Send{
@IsString()
@ApiProperty({ required: true })
MessageID: string;
}

以下是toJson的样子:

{
MessageID: 123
}

如果我发送一个非字符串MessageID,它可以传递DTO。请帮助

您必须启用validationPipe才能启用DTO,根据NestJS的文档,有两种方法。ValidationPipe是从@nestjs/common导出的。

1.在全球范围内,您的main.ts

// validate incoming requests
app.useGlobalPipes(
new ValidationPipe({
transform: true,
})
);

2.每个控制器

@Post()
@UsePipes(new ValidationPipe({ transform: true }))
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}

相关内容

  • 没有找到相关文章

最新更新