nestjs - 如何一起使用 ParseIntPipe 和 Dto?
问题描述
从查询我得到限制参数。如何转换成数字并通过 Dto 检查?
@Get('currency/:type')
getCurrency(
@Param() params: CurrencyTypeDto,
@Query('limit', ParseIntPipe) limit: number,
@Query() query: PaginationLimitDto
) {
分页限制
export class PaginationLimitDto {
@IsOptional()
@IsInt()
limit: number;
}
解决方案
查询和 URL 参数始终以字符串对象的形式出现,就像底层引擎如何处理它们一样。你可以用你的 DTO 做的是添加@Transform()
装饰器并执行类似的操作
export class PaginationLimitDto {
@IsOptional()
@IsInt()
@Transform(val => Number.parseInt(val))
limit: number;
}
然后你只需要@Query() query: PaginationLimitDto
在你的方法处理程序中。Nest'sValidationPipe
会为您接听电话class-transformer
并class-validator
为您服务。
推荐阅读
- php - 为什么我的干净 url 在另一个文件夹中不起作用?
- python - 即使通过 Django 中间件重定向后请求仍继续
- tcl - 如何将包含单个正斜杠的网络文件路径作为参数传递给 tcl proc?
- amazon-web-services - 将数据从 AWS Glue 数据目录提取到外部文本文件
- node.js - 如何在没有 root 的情况下从 Ubuntu 18.04.3 中完全删除节点?
- flutter - 如何在颤动中显示小吃吧无限持续时间?
- javascript - 如何在 JS FETCH API 之外访问返回值
- python - 如何解决与在 Windows 10 上安装 dlib 相关的问题?
- c# - HashSet 重叠不能按预期工作
- netlogo - 如何让Netlogo模型自动停止,关闭文件并重新启动模型