javascript - NestJs:使用类验证器验证对象数组
问题描述
我正在尝试对数组的每个项目进行验证。
根据我的理解(如果我错了请纠正我),类验证器不支持直接验证数组。它需要我们创建一个包装类。
因此,以下是类:
export class SequenceQuery {
@MinLength(10, {
message: 'collection name is too short',
})
collection: string;
identifier: string;
count: number;
}
export class SequenceQueries{
@ValidateNested({ each: true })
queries:SequenceQuery[];
}
以下是我的控制器:
@Get("getSequence")
async getSequence(@Body() query:SequenceQueries) {
return await this.sequenceService.getNextSequenceNew(query)
}
以下是我传递给控制器的 JSON:
{"queries": [
{
"collection": "A",
"identifier": "abc",
"count": 1
},
{
"collection": "B",
"identifier": "mno",
"count": 5
},
{
"collection": "C",
"identifier": "xyz",
"count": 25
}
]}
但这似乎不起作用。它不会抛出任何验证消息。
解决方案
我得到了问题的解决方案。
我应该将我的包装类更改为:
export class SequenceQueries{
@ValidateNested({ each: true })
@Type(() => SequenceQuery) // added @Type
queries:SequenceQuery[];
}
但是我会留下这个问题,以防万一有人有替代解决方案,例如不必制作包装类。
推荐阅读
- ios - 如何在 Firestore (iOS) 中获取对象
- laravel - Laravel 权限被拒绝 bootstrap/cache/packages.phpkC7P4V 无法打开流:权限被拒绝
- django - LoginRequiredMixin 没有在 django 3 中使用 TemplateView 重定向
- python - 无法将 tf.data.Dataset 对象转换为 numpy 迭代器
- ios - 以编程方式将按钮约束到选项卡栏的底部中心
- rust - Rust:将两个 Vec 映射到复合结构的第三个 Vec
- opencv - 如何将opencv图像与以mm为单位的尺寸相关联?
- regex - 使用 Excel VBA 提供的 RegEx 仅从 Word doc 中提取第一个匹配项
- google-apps-script - 以编程方式为容器绑定表启用特定的 appscript
- python - Django - 使用电子邮件或用户名登录不起作用