@ApiImplicitQuery摇摇欲坠-无法配置“枚举”

时间:2018-08-02 10:37:25

标签: javascript node.js swagger nestjs

您可以在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文档: Sample Image

我在做什么错了?

2 个答案:

答案 0 :(得分:2)

更新8月18日

提取请求刚刚合并,并且在版本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