从查询中我得到限制参数。如何转化为数字并通过Dto进行检查?
@Get('currency/:type')
getCurrency(
@Param() params: CurrencyTypeDto,
@Query('limit', ParseIntPipe) limit: number,
@Query() query: PaginationLimitDto
) {
Run Code Online (Sandbox Code Playgroud)
分页限制
export class PaginationLimitDto {
@IsOptional()
@IsInt()
limit: number;
}
Run Code Online (Sandbox Code Playgroud)
查询和 URL 参数始终作为字符串对象出现,这取决于底层引擎如何处理它们。使用 DTO,您可以添加@Transform()装饰器并执行类似的操作
export class PaginationLimitDto {
@IsOptional()
@IsInt()
// pre 0.3.2 syntax
@Transform(val => Number.parseInt(val))
// after 0.3.2 syntax*
@Transform({ value } => Number.parseInt(value))
limit: number;
}
Run Code Online (Sandbox Code Playgroud)
然后你只需要@Query() query: PaginationLimitDto在你的方法处理程序中。NestValidationPipe会为您接听class-transformer电话class-validator。
*请参阅Github 上的变更日志
装饰器的更新语法@Transorm。
import { Transform } from 'class-transformer';
export class Photo {
id: number;
@Transform(({ value }) => parseInt(value))
index: number;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6280 次 |
| 最近记录: |