NestJS 在不是对象类型时验证 POST 正文

标签 nestjs

我需要验证通过 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/

相关文章:

postgresql - TypeORM 条件可为空?

event-handling - 无法捕获 NestJs 中的事件

node.js - 如何在 NestJS 中测试具有多个构造函数参数的服务

swagger - NestJS/Swagger - 没有获得完整的描述

node.js - NestJS + TypeORM 设计模式 : resolver vs service

node.js - 使用 AWS Parameter Store 的 NestJs TypeORM 配置

javascript - 如何在 Nestjs 的服务中获取 req.user

javascript - Swagger UI 总是出现在 NestJS 中

javascript - Nest 无法识别来自 fetch 请求的 POST

javascript - 嵌套 : Cannot create a new connection named "default",,因为使用该名称的连接已经存在,并且它现在有一个事件的连接 session