Javascript swagger中数组POST的空JSON参数

Javascript swagger中数组POST的空JSON参数,javascript,node.js,typescript,swagger,nestjs,Javascript,Node.js,Typescript,Swagger,Nestjs,我正在使用nest.js,我有一个向数据库添加新新闻的发布路径 因此,我使用postman发送了一组对象,如下所示: [ { "newsTitle" : "title1", "newsDescription": "description1" }, { "newsTitle" : "title2", "newsDescription": "description2" } ] 这是我控制器中post的代码: @Post() async create(@Bod

我正在使用nest.js,我有一个向数据库添加新新闻的发布路径 因此,我使用postman发送了一组对象,如下所示:

[
{ 
    "newsTitle" : "title1",
    "newsDescription": "description1"
},
{ 
    "newsTitle" : "title2",
    "newsDescription": "description2"
}
]
这是我控制器中post的代码:

@Post()
  async create(@Body() body: NewsDto[]) {

    const len = body.length;

    if (len == 1) {
    }

    else if (len > 1) {
    }

    return this.newsService.createNews(body);
  }
所以,在post和将数据保存到数据库中时,一切都可以正常工作 但当我使用swagger时,我得到了该控制器dto的模型,如下所示:

[
{ 
    "newsTitle" : "title1",
    "newsDescription": "description1"
},
{ 
    "newsTitle" : "title2",
    "newsDescription": "description2"
}
]

您可以看到dto的参数没有显示在这里,而我得到的是“Array”标题,因为我使用了
@Body()Body:NewsDto[]
,它是您看到的数组

同样在这里的帖子中,我无法获得JSON,因此我可以添加它或用另一个词发布它


那么如何处理这个问题呢?当数组的长度只有1个对象时,我返回NewsDto参数,如果数组的长度超过1个对象,那么也返回NewsDto参数,而不是数组?

您必须将
@ApiModelProperty()
装饰器添加到DTO的属性中:

export class NewsDto {
  @ApiModelProperty()
  newsTitle: string;

  @ApiModelProperty()
  newsDescription: string;
}
然后将
@apimplicitbody()
添加到控制器方法:

@Post()
@ApiImplicitBody({ name: 'news', type: [NewsDto]})
async create(@Body('news') body: NewsDto[]) {

您必须将
@ApiModelProperty()
装饰器添加到DTO的属性中:

export class NewsDto {
  @ApiModelProperty()
  newsTitle: string;

  @ApiModelProperty()
  newsDescription: string;
}
然后将
@apimplicitbody()
添加到控制器方法:

@Post()
@ApiImplicitBody({ name: 'news', type: [NewsDto]})
async create(@Body('news') body: NewsDto[]) {

我已经添加了这个!对于我使用dto而不是像现在这样的数组的其他post函数,对于数组类型,招摇过市工作正常,dto的参数显示良好@Kim kern,您还必须向控制器方法添加
apimplicitbody
,请参见我的编辑。我已经添加了这个!对于我使用dto而不是像现在这样的数组的其他post函数,对于数组类型,招摇过市工作正常,dto的参数显示良好,您还必须向控制器方法添加
apimplicitbody
,请参见我的编辑。