3

您可以在nest swagger 文档中看到如何配置枚举,但它不起作用。

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 文档: 示例图像

我究竟做错了什么?

4

2 回答 2

2

8月18日更新

拉取请求刚刚合并,并在 version 中可用v5.2.0

原帖

引入支持的拉取请求尚未合并,因此该功能尚不可用。不幸的是,文档更新得太早了:enumApiImplicitQuery

文档已经更新,但代码没有更新。

遵循拉取请求以在该功能可用时获得通知。然后你可以更新@nestjs/swagger包。

于 2018-08-02T22:54:38.707 回答
1

不完全是一个答案,而且我希望这比评论更明确一点。

我是此功能的 PR 的作者。我什至在提交文档相关部分的 PR 之前就提交了 PR。但是,合并了相关文档的 PR,而没有合并实现 PR。已经一个多月了,我还没有收到 Kamil(NestJS 的作者)的任何消息。我认为他现在太忙了,因为整个框架只有两个人在工作:Kamil 本人和 ThomRick (NestCLI)。

我希望,有足够多的要求和压力,Kamil 会真正关注@nestjs/swagger. 现在,我建议你处理你Controller的期望,不幸 string的是。

于 2018-08-03T23:18:20.307 回答