Nestjs的swagger数组字符串与一个参数



当我只发送一个参数时,我得到的查询结果像字符串一样,而不是像字符串[]。这只发生在UI swagger,如果我从Postman发送-它工作得很好。

我只想从swagger-ui发送一个参数得到字符串数组,而不是字符串

我该如何修复它?请帮帮我。

Example1:发送一个参数,在我的控制器中,我得到字符串,如'25'

示例2:当我在控制器中发送2个参数时,我可以看到字符串数组('25','21')

export class List {
@ApiProperty({ isArray: true, type: String, required: false })
@IsOptional()
public categories?: string[];
}

当您填写单个类别时,查询参数将被翻译为字符串,而当您填写多个类别时,将其理解为数组。

为了解决这个问题,我添加了DTO:

@Transform(({ value }) => (Array.isArray(value) ? value : Array(value)))

强制转换为数组

你应该尝试在services中的const中展开你的参数编辑:

我不知道如何用正式的话来解释,但是一个项目的字符串数组,对于JAVASCRIPT来说,似乎和一个字符串值是一样的。

因为array不是类型,而是类型的一种形式....

所以,如果你在控制器中,在对它做任何操作之前,你重新声明为:

@Get(":id")
findManybyId(@Param("id") id: string[]) {
const idArray = [...id];
return await this.service.findManyById(idArray);
}

它将解决你作为一个数组的问题


老答:

你应该试着在你的控制器中改变你的输入装饰器。

在你的情况下,我不知道你是否使用ID获取,但你必须做的例子:

@ApiOperation({
summary: "Get many categories by ID",
})
async getMany(
@Param("id") ids: string[],
) {
return await this.categoriesService.getMany(id);
}

相关内容

  • 没有找到相关文章

最新更新