是否可以通过NestJS中的类验证器来验证顶级数组?

问题描述 投票:0回答:1

所以我有带有全局验证管道的 NestJS:

app.useGlobalPipes(new ValidationPipe())

是否可以像这样验证 TOP LEVEL ARRAY?

[{
  "id":1,
  "name":"John"
}, {
  "id":2,
  "name":"Jane"
}]

我已阅读文档,但他们建议仅进行嵌套数组验证,因此有效负载需要类似于

{
  "users": [
    {
      "id": 1,
      "name": "John"
    },
    {
      "id": 2,
      "name": "Jane"
    }
  ]
}

但问题是关于验证顶级数组,而不是将其嵌套到附加变量中。

目前我最好的想法是扩展

ValidationPipe
以将第一个示例中的有效负载转换为第二个示例中的有效负载。 但我正在寻找类似
yup.array()
的东西,它在顶级工作得很好,想知道
class-validator
是否缺少顶级数组验证,或者我是否缺少文档中的某些内容。

validation nestjs dto class-validator
1个回答
1
投票

正如文档提到的,有

ParseArrayPipe
最终针对提供的 DTO 类型的数组运行
ValidationPipe
。由于 Typescript 如何处理泛型的反射(哪些数组被认为是),您必须手动绑定此管道。这就是为什么通常首选使数组成为对象的属性而不是顶级值

© www.soinside.com 2019 - 2024. All rights reserved.