可以在不定义关系的情况下在 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 {
// ...
}
我想将创建者字段添加到我的所有实体以用于授权目的。以前我有一个从每个实体到用户实体的 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 {
// ...
}