如何解决响应主体带有正确的对象计数数组,但对象为空
我刚刚使用TypeORM和Swagger启动了一个Ts.ED项目,以连接到我的数据库。我有一个UserController.ts
文件和一个UserService.ts
文件。在服务文件中,我有一个异步函数,可以在其中检索数据库中的所有用户
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
装饰器的属性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。