首页 > 解决方案 > 如何更改查询参数的类型?

问题描述

我想将我的查询参数从字符串转换为数字。我使用 dto 技术。

import { IsOptional, IsInt, Min } from 'class-validator';
import { Transform } from 'class-transformer';

export class PaginationDto {
    @IsOptional()
    @IsInt()
    @Transform(val => Number.parseInt(val))
    @Min(1)
    perPage: number;

在控制器中使用 dto

    @Get('/company')
    public async getCompanyNews(
        @Query() query: PaginationDto
    ) {
        console.log(typeof query.page);

结果:字符串。

如何正确更改类型?

标签: nestjs

解决方案


为确保 DTO 得到转换,transform: true必须为ValidationPipe. 没有它,原始传入对象将在通过验证后传递。


推荐阅读