所以我有带有全局验证管道的 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
是否缺少顶级数组验证,或者我是否缺少文档中的某些内容。
正如文档提到的,有
ParseArrayPipe
最终针对提供的 DTO 类型的数组运行 ValidationPipe
。由于 Typescript 如何处理泛型的反射(哪些数组被认为是),您必须手动绑定此管道。这就是为什么通常首选使数组成为对象的属性而不是顶级值