响应主体带有正确的对象数组,但对象为空

Response body comes with correct array of objects count but objects are empty

我刚刚启动了一个 Ts.ED 项目,使用 TypeORM 和 Swagger 连接到我的数据库。我有一个 UserController.ts 文件和一个 UserService.ts 文件。在服务文件中,我有一个异步函数,我在其中检索我的 db

中的所有用户
async find(): Promise<Users[]> {
  const users = await this.connection.manager.find(Users);
  return users
}

然后在我的控制器文件中调用该服务函数 find,以使其响应显示在 swagger 上 ui

@Get('/')
@Returns(200, Array).Of(Users)
async findAll(): Promise<Users[]> {
  const users = await this.usersService.find()
  console.log('user',users)
  return users
}

问题是 console.log 调用确实打印了它应该打印的所有内容,但是在 swagger ui 上,响应正文只显示

[
  {},
  {},
  {}...
]

虽然对象数正确,但为空。

现在,如果我将控制器功能更改为

@Get('/')
//@Returns(200, Array).Of(Users)
async findAll(): Promise<Users> {
  const users = await this.usersService.find()
  console.log('user',users)
  return users[0]
}

对象以 swagger ui 的所有属性正确显示。

知道为什么数组的对象显示为空吗?

您是否使用装饰器 @Property 正确定义了用户模型? https://tsed.io/docs/converters.html#usage

好的,我明白了。所以,我误解了 TypeORM 和 Ts.Ed 的部分文档。在 TypeORM 中,数据库模型称为 Entities。我有一个文件 User.entity.ts 和一个 User.model.ts 文件,它们大部分相同,所以一开始看起来有点不对劲。现在,通过查看@some-user 的回答,我在模型文件中添加了 @Property 装饰器。然后我尝试将它放入实体文件并且数组中的对象不再为空,它们显示了我放置 @Property 装饰器的属性。

在控制器中使用typescript、nestJs或swagger时,也可以使用这个;

@Post()
@ApiBody({ type: [objectItem] })
async create(@Body() body: objectItem[]) {