如何在 TypeORM 的一对多关系中只引用一个实体
How to reference only one entity in a one-to-many relationship in TypeORM
我想知道在一对多关系中仅引用一个相关实体而不是所有实体的最佳方式是什么。
例如,假设我有一个用户,它可以有多张照片。
我希望每张照片都与用户相关,但从用户的角度来看,我只关心一张特定的照片(例如最后上传的一张)。
一种方法是:
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
currentPhotoId: number;
async getCurrentPhoto(): Photo {
...
}
...
}
@Entity()
export class Photo {
@PrimaryGeneratedColumn()
id: number;
@ManyToOne(() => User, user => user.photos)
user: User;
...
}
但是,有没有一种 TypeORM 方式可以做这样的事情?例如,如果它是一个急切的解决方案并且不需要另一个异步操作来获取相关实体,那就太好了。
我可能不是第一个提出这个要求的人,但我没有找到任何东西,也许我没有正确搜索。
我认为 currentPhotoId
应该与 Photo
有 oneToOne
关系,并且在更新照片时,应该更新此 ID。因为这样业务逻辑和数据库模式将被正确分离。
我想知道在一对多关系中仅引用一个相关实体而不是所有实体的最佳方式是什么。
例如,假设我有一个用户,它可以有多张照片。 我希望每张照片都与用户相关,但从用户的角度来看,我只关心一张特定的照片(例如最后上传的一张)。
一种方法是:
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
currentPhotoId: number;
async getCurrentPhoto(): Photo {
...
}
...
}
@Entity()
export class Photo {
@PrimaryGeneratedColumn()
id: number;
@ManyToOne(() => User, user => user.photos)
user: User;
...
}
但是,有没有一种 TypeORM 方式可以做这样的事情?例如,如果它是一个急切的解决方案并且不需要另一个异步操作来获取相关实体,那就太好了。
我可能不是第一个提出这个要求的人,但我没有找到任何东西,也许我没有正确搜索。
我认为 currentPhotoId
应该与 Photo
有 oneToOne
关系,并且在更新照片时,应该更新此 ID。因为这样业务逻辑和数据库模式将被正确分离。