soy*_*yuz 11 typescript class-validator nestjs
如何验证uuid数组?我使用预构建的ParseArrayPipe来验证有效负载数组结构。
@Post(':id/players')
addPlayers(
@Body(new ParseArrayPipe({ items: GamePlayerDto, separator: ',' }))
gamePlayers: GamePlayerDto,
) {
console.log(gamePlayers);
}
Run Code Online (Sandbox Code Playgroud)
export class GamePlayerDto {
@IsUUID()
playerId!: string;
}
Run Code Online (Sandbox Code Playgroud)
我不想让类验证器检查playerId属性是否在这里,而只是检查原始值
例如,这是我的服务器应该收到的
["73aef2dd-c227-4774-b547-b3117b543863", "73aef2dd-c227-4774-b547-b3117b543863"]
Run Code Online (Sandbox Code Playgroud)
SPS*_*SPS 16
您必须设置选项 - “each: true”。
export class GamePlayerDto {
@IsUUID(UUIDVersion,{each:true})
playerId!: string;
}
Run Code Online (Sandbox Code Playgroud)
接受的 UUID 版本值 -
'3' | '4' | '5' | 'all' | 3 | 4 | 5;
引用官方文档 - “指定验证值是否是一个数组,并且它的每个项目都必须经过验证。”
本质上,playerId 的值被视为一个数组,并且是 UUID 类型(指定版本),并且每个值都必须经过验证。
更新
还将您的请求处理程序更新为:
@Post(':id/players')
addPlayers(
@Body(ValidationPipe))
gamePlayers: GamePlayerDto,
) {
console.log(gamePlayers);
}
Run Code Online (Sandbox Code Playgroud)
ValidationPipe
是 NestJS 中的默认管道,与类验证器协同工作。它将验证传入的请求正文/参数等,如果不满足 DTO 中设置的条件,则拒绝。
小智 5
你可以用它
@IsUUID(undefined, {each:true})
providers: string[]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22808 次 |
最近记录: |