我需要验证通过 POST
传递的电子邮件列表(字符串数组)。使用验证管道和 class-validator 之类的东西会很棒(但是在官方文档中,我只找到了通过 DTO 进行对象验证和原始类型验证的示例,但对于 GET 请求)。
这是我的方法在 Controller 中的样子:
@Post()
async submit(@Body() emails: string[]) {
}
最佳答案
如果只是像这样直接传递,那么除了实现自定义管道之外,您无能为力。如果您能够更改有效负载结构,我建议将其更改为类似的内容
export class PostDTO {
@IsEmail({ each: true })
emails: string[]
}
并使用
@Post()
async submit(@Body() { emails }: PostDTO) {}
以便 Nest 的 ValidationPipe
可以读取帖子的元数据。
关于NestJS 在不是对象类型时验证 POST 正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70557827/