您可以在nest swagger documentation中看到如何配置枚举,但这是行不通的。
import {SwaggerEnumType} from '../types/swagger-enum.type';
export declare const ApiImplicitQuery: (metadata: {
name: string;
description?: string;
required?: boolean;
type?: 'String' | 'Number' | 'Boolean' | any;
enum?: SwaggerEnumType;
isArray?: boolean;
collectionFormat?: "csv" | "ssv" | "tsv" | "pipes" | "multi";
}) => MethodDecorator;
上面您可以在swagger模块的代码中看到我所做的更改。您可以在下面看到我的代码。
@ApiImplicitQuery({name: "orderBy", enum: ['Admin', 'Moderator', 'User']})
@ApiResponse({status: 200, description: "Successful getting registration list for admin"})
@Get('registrations/list')
public async getAdmin(@Req() req, @Res() res: Response,
@Query('page') page: number,
@Query('perPage') perPage: number,
@Query('orderBy') orderBy: UserRole = UserRole.User,
@Query('orderDir') orderDir: number
) {
try {
let token = await getCompaignIdFromAdminToken(req.headers['authorization']);
let helper: HelperClass = new HelperClass();
await helper.isUserAdmin(token);
let users = await this.adminFacade.getAllUsersList(orderBy, orderDir);
let entity = await this.adminFacade.parseRegistrationUsersList(users);
let pagePar = (page) ? page : 0;
let perPagePar = (perPage) ? perPage : users.length;
let response = await returnResponseByPageAndPerPageValues(entity, pagePar, perPagePar);
res.status(HttpStatus.OK).json({response: response, entries: users.length});
} catch (err) {
errorResponse(res, err.message, HttpStatus.BAD_REQUEST);
}
}
export enum UserRole {
Admin = 'Admin',
Moderator = 'Moderator',
User = 'User'
}
在下面,您可以看到生成的swagger文档:
我在做什么错了?
答案 0 :(得分:2)
提取请求刚刚合并,并且在版本v5.2.0
中可用。
引入enum
支持ApiImplicitQuery
的{{3}}尚未合并,因此该功能尚不可用。不幸的是,文档更新太早了:
该文档已经更新,但代码尚未更新。
遵循拉取请求以在功能可用时得到通知。然后,您可以更新@nestjs/swagger
软件包。
答案 1 :(得分:1)
不完全是一个答案,我也希望它比评论更明确。
我是该功能的PR的作者。我甚至在提交文档中相关部分的PR之前就已经提交了PR。但是,相关文档的PR已合并,而实现PR并未合并。已经有一个多月了,我什么都没收到Kamil(NestJS的作者)的消息。我认为他目前太忙了,因为只有两个人负责整个框架:Kamil本人和ThomRick(NestCLI)。
我希望,只要有足够的请求和压力,卡米尔(Kamil)就会真正查看@nestjs/swagger
上的PR。就目前而言,建议您处理Controller
来期待 exact string
。