可以在不定义关系的情况下在 TypeORM 中使用预加载吗?

possible to use eager loading in TypeORM with out defining a relationship?

我想将创建者字段添加到我的所有实体以用于授权目的。以前我有一个从每个实体到用户实体的 OneToOne 关系,但现在我看到它正在向该表添加约束,最终用户无法创建超过一条记录。 然后我想到了另一个解决方案,它添加了一个 ManyToOne 关系,但问题是你必须为你创建的每个实体添加一个相应的字段到用户。 像 createdPosts、createdLikes、createdComments,这也不是我需要的。 还有另一种选择是添加一个带有数字类型的 Creator 字段和 leftjoin 以在每次提取时获取用户,但这增加了维护的负担。 那么在 TypeORM 中是否有任何内置解决方案可以将 Field Creator 添加到我的具有用户类型的实体,并且还可以选择在获取和获取期间预先加载它?

class User extends BaseEntity {
    @PrimaryGeneratedColumn()
    id: number; 
}
class Service extends BaseEntity {
    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    creator: User
 
}

对于需要 Creator 的实体,您需要多对一,但对于每个实体,您不需要在 User 上一对多。 TypeOrm 多对一 documentation 具体说“如果你只关心 @ManyToOne 关系,你可以定义它而无需在相关实体上使用 @OneToMany。”

您可以将其设为基础 class 以节省为每个实体键入此内容的时间:

@Entity()
export class EntityWithCreator extends BaseEntity {
    @ManyToOne(() => User, { eager: true } )
    @JoinColumn()
    creator: User;
}

@Entity()
export class Service extends EntityWithCreator {
    // ...
}