typescript - 如何在 TypeORM 的一对多关系中只引用一个实体

标签 typescript one-to-many typeorm many-to-one

我想知道在一对多关系中仅引用一个相关实体而不是所有实体的最佳方式是什么。

例如,假设我有一个用户,它可以有多张照片。 我希望每张照片都与用户相关,但从用户的角度来看,我只关心一张特定的照片(例如最后上传的一张照片)。

一种方法是:

@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 应该是 oneToOnePhoto 的关系,并且在更新照片时,应该更新此 ID。因为这样业务逻辑和数据库模式将被正确分离。

关于typescript - 如何在 TypeORM 的一对多关系中只引用一个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71062479/

相关文章:

typescript - Ionic - 处理 NavBar 后退按钮?

python - Django - 更改一对多关系中相关对象的值

node.js - 无法在 TypeORM 中以一对一关系更新数据

typescript - 类验证器 - 根据不同类型进行验证

sql - 一个简单的 - JPA @OneToMany 正在为不存在的表生成 SQL

typescript - jest mock 看不到它在函数中的 if 语句里面被调用了

sequelize.Model.Update 的 Typescript 接口(interface)不正确?

angular - InjectionToken 产生 "Error encountered resolving symbol values statically"

javascript - 如果没有 .js 扩展名,则为 ERR_MODULE_NOT_FOUND

JPA如何在不删除子项的情况下删除父项?