Typescript 如果不单独使用,nestjs/swagger是否支持查询参数的文档?
我定义了一个路由来获取控制器中订单的分页结果Typescript 如果不单独使用,nestjs/swagger是否支持查询参数的文档?,typescript,nestjs,nestjs-swagger,Typescript,Nestjs,Nestjs Swagger,我定义了一个路由来获取控制器中订单的分页结果 @Get() 异步查找( @查询(新的ValidationPipe({whitelist:true})) 查询:OrderQueryTo&PaginatedQueryTo, ) { const builder=this.orderRepository .createQueryBuilder(“订单”) .select('order.id') .take(query.take) .skip(query.skip) .andWhere('order.st
@Get()
异步查找(
@查询(新的ValidationPipe({whitelist:true}))
查询:OrderQueryTo&PaginatedQueryTo,
) {
const builder=this.orderRepository
.createQueryBuilder(“订单”)
.select('order.id')
.take(query.take)
.skip(query.skip)
.andWhere('order.status!=“已删除”);
if(查询状态){
builder.andWhere('order.status=:status');
}
const[items,count]=wait builder.getManyAndCount();
返回{items,count};
}
但是,我希望有一些关于查询参数的文档(类型为OrderQueryDto&PaginatedQueryDto
)。
我没有找到任何为nest swagger模块生成的api描述创建文档(和测试字段)的装饰器
我想我正在搜索类似于@apimplicityquerystring({type:orderQueryTo&paginatedQueryTo})的内容
我知道有一种方法可以这样记录:
@Get()
@apimplicitquery({
名称:“take”,
必填项:false,
类型:数字,
})
@apimplicitquery({
名称:“跳过”,
必填项:false,
类型:数字,
})
//以及OrderQueryTo[…]上其余属性的所有其他装饰程序
异步查找(
@查询(新的ValidationPipe({whitelist:true}))
查询:OrderQueryTo&PaginatedQueryTo,
) {
const builder=this.orderRepository
.createQueryBuilder(“订单”)
.select('order.id')
.take(query.take)
.skip(query.skip)
.andWhere('order.status!=“已删除”);
if(查询状态){
builder.andWhere('order.status=:status');
}
const[items,count]=wait builder.getManyAndCount();
返回{items,count};
}
顺便说一句,DTO看起来像这样
从“类转换器”导入{Transform};
从“类验证器”导入{IsInt,IsOptional};
导出类PaginatedQueryDto{
@IsInt()
@等民族()
@转换(值=>value&&parseInt(值,10))
取?:数字;
@IsInt()
@等民族()
@转换(值=>value&&parseInt(值,10))
跳过?:数字;
}
从“类验证器”导入{IsInt,IsOptional,IsEnum};
从“类转换器”导入{Transform};
从“./order.entity”导入{OrderStatus};
导出类OrderQueryTo{
@IsInt()
@等民族()
@转换(值=>value&&parseInt(值,10))
经销商:编号;
@IsInt()
@等民族()
@转换(值=>value&&parseInt(值,10))
顾客:号码;
@IsEnum(订单状态)
@等民族()
状态:订单状态;
}
将@ApiTags('port')
添加到控制器。下面是代码
控制器
import { Body, Controller, Get, Param, Post, Query } from '@nestjs/common';
import { PaginationQuery } from './pagination-query.dto';
import {
ApiBearerAuth,
ApiConsumes,
ApiExtension,
ApiHeader,
ApiOperation,
ApiQuery,
ApiResponse,
ApiSecurity,
ApiTags
} from '@nestjs/swagger'
@ApiTags('ports')
@Controller('port')
export class PortController {
@Get()
findAll(@Query() paginationQuery: PaginationQuery) {}
}
分页查询
import { ApiProperty } from '@nestjs/swagger';
export enum LettersEnum {
A = 'A',
B = 'B',
C = 'C'
}
export class PaginationQuery {
@ApiProperty({
minimum: 0,
maximum: 10000,
title: 'Page',
exclusiveMaximum: true,
exclusiveMinimum: true,
format: 'int32',
default: 0
})
page: number;
@ApiProperty({
name: '_sortBy'
})
sortBy: string[];
@ApiProperty()
limit: number;
@ApiProperty({
enum: LettersEnum,
enumName: 'LettersEnum'
})
enum: LettersEnum;
@ApiProperty({
enum: LettersEnum,
enumName: 'LettersEnum',
isArray: true
})
enumArr: LettersEnum;
@ApiProperty()
beforeDate: Date;
@ApiProperty({
type: 'object',
additionalProperties: true
})
filter: Record<string, any>;
static _OPENAPI_METADATA_FACTORY() {
return {
sortBy: { type: () => [String] }
};
}
}
从'@nestjs/swagger'导入{ApiProperty};
导出枚举LettersEnum{
A=‘A’,
B=‘B’,
C='C'
}
导出类分页查询{
@蜂房地产({
最低:0,
最高限额:10000,
标题:“第页”,
排他性最大值:对,
排他性极小:是的,
格式:“int32”,
默认值:0
})
页码:编号;
@蜂房地产({
姓名:“_sortBy”
})
排序:字符串[];
@ApiProperty()
限制:数量;
@蜂房地产({
枚举:LettersEnum,
枚举名称:“LettersEnum”
})
枚举:LettersEnum;
@蜂房地产({
枚举:LettersEnum,
enumName:'LettersEnum',
伊萨雷:是的
})
enumArr:LettersEnum;
@ApiProperty()
beforeDate:日期;
@蜂房地产({
类型:“对象”,
附加属性:true
})
过滤器:记录;
静态(OPENAPI)元数据(FACTORY){
返回{
排序方式:{type:()=>[String]}
};
}
}
你好,和你一样。你能解决这个问题吗?我需要帮助