typescript - OneToOne 加入 Foalts 和 Typeorm
问题描述
我有两个用 Foalts 框架编写的实体,它们正在使用 Typeorm。
这是user.entity.ts
:
@Entity()
export class User extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
password: string;
@Column({ unique: true })
phone: string
@OneToOne(() => UserProfile)
@JoinColumn()
userProfile: UserProfile
}
第二个是用户资料:
@Entity()
export class UserProfile extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Column()
firstname: string;
@Column()
surname: string
@Column()
email: string
@Column()
birthDate: number
}
export { DatabaseSession } from '@foal/typeorm';
我的问题是:如何在我的控制器中编写查询以在输出中有这样的对象:
{
"id":41,
"phone":"+18885555555",
"userProfile" : {
"id": 12,
"firstname": "Pourya",
"surname": "Daneshvar",
"email": "example@example.me",
"birthDate": 1613503707
}
}
这是我的控制器:
@Get('/user/profile')
async getUserProfile(ctx: Context) {
const user = await ...
...
return new HttpResponseOK(user)
}
解决方案
最简单的方法是向关系添加Eager: true
选项,如下所述:
@Entity()
export class User extends BaseEntity {
// ...
@OneToOne(() => UserProfile, { eager: true } )
@JoinColumn()
userProfile: UserProfile;
}
或者,如果您不希望每次加载用户时都检索 UserProfile 数据,您可以将关系选项添加到find
or findOne
,例如
const user = await User.findOne({ where: { id: userId } , relations: ["userProfile"] });
推荐阅读
- html - 屏幕阅读器和 HTML5 验证
- python - 熊猫 read_sql_table 永远不会解决
- php - 为什么 Internet Explorer 将 filedownload.php/path= 添加到文件的任何链接
- python - 从包导入 * as _
- javascript - 与 Material-UI 反应找不到模块
- android - 我有一个使用 XML 制作的自定义编辑文本,只有在 KITKAT 版本中它具有黑色背景
- compilation - ld 如何加载自身?
- scala - 在 Scala 数据框中,成对比较后合并等效行
- java - 春季填写表格后如何更改子页面?
- json - 实现接口时 F#“代码不够通用”“^T 无法泛化”