当我只发送一个参数,我得到的查询结果像字符串,而不是像字符串[]。这只从UI swagger happend,如果我从 Postman 发送-它的工作很好。
我只想从swagger-ui发送一个参数,得到的是字符串数组,而不是字符串
我该怎么修?请帮帮我。
示例1:send one paramenter and in my controller I got string like '25'
示例2:when I send 2 parameters in controller I can see array of strings ('25', '21')
export class List {
@ApiProperty({ isArray: true, type: String, required: false })
@IsOptional()
public categories?: string[];
}
2条答案
按热度按时间yeotifhr1#
您应该尝试在服务编辑中的常量中扩展参数:
我不知道如何用正式的语言来解释,但是一个项目的字符串数组,对于JAVASCRIPT来说,似乎与一个字符串值是一样的。
因为数组不是类型,而是类型的形式......
所以,如果你在你的控制器中,在对它做任何事情之前,你重新声明为:
它将解决作为阵列的问题
老回答:
你应该尝试在你的控制器中改变你制作输入装饰器的地方。
在你的情况下,我不知道你是否使用ID来获取,但你必须做的例子:
inkz8wg92#
当你填写一个类别时,查询参数将被转换为字符串,而当你填写多个类别时,查询参数将被理解为数组。
为了解决此问题,我在DTO中添加了:
@Transform(({ value }) => (Array.isArray(value) ? value : Array(value)))
我强行施展阵