typescript - 响应正文带有正确的对象数组,但对象为空
问题描述
我刚刚开始使用 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 中正确显示。
知道为什么使用数组,它的对象显示为空吗?
解决方案
好吧,我想通了。所以,我误解了 TypeORM 和 Ts.Ed 文档的一部分。在 TypeORM 中,数据库模型被称为Entities
. 我有一个文件 aUser.entity.ts
和一个User.model.ts
文件,大部分是相同的,所以一开始看起来有点不对劲。现在,通过查看@some-user 的回答,我@Property
在模型文件中添加了装饰器。然后我尝试将其放入实体文件,并且数组中的对象不再为空,它们显示了我放置@Property
装饰器的属性。
推荐阅读
- c - Valgrind 内存泄漏,无效的 free()
- node.js - javascript 中的范围和块问题。声明变量
- python - 如何在python中没有列表理解的情况下使用for循环从列表中弹出所有负数
- python - 无法使用 .astype(int) 方法将 pandas 数据框列转换为 int 变量类型
- java - 滚动视图不滚动布局权重
- javascript - 多台计算机上的 Fullcalendar 自动更新日历
- javascript - 嵌套数组的 JavaScript 递归
- reactjs - create-react-app 与 storybook 6.1.6 集成并且构建有错误
- react-native - 广告未在 iOS 中展示 | 反应原生
- time - istio 日志输出时区可以修改吗?