[英]TypeORM How to access reference relation field without loading relation entity
众所周知,要创建 ManyToOne/OneToMany 关系,我们必须在字段上使用 @ManyToOne/@OneToMany 装饰器。
在我的项目中,我有两个实体: Project
和Position
。
这就是我创建关系的方式:
@Entity('positions')
export class Position {
@ManyToOne(() => Project, {
nullable: false,
eager: true,
})
@JoinColumn()
project: Project;
}
TypeORM 文档说此代码将在数据库中创建projectId FOREIGN KEY
列并在其中存储项目 ID。
然后,当我们尝试访问project
属性时,TypeORM 通过存储在projectId
字段中的 id 加载项目。
问题
如何在不加载关系实体的情况下访问该pojectId
字段?
默认情况下,属性projectId
在Position
实体中不存在,如果我手动创建它,它不会由projectId
列值填充。
我试过这样:
@ManyToOne(() => Project, {
nullable: false,
eager: false,
})
@JoinColumn()
project: Project;
projectId: string;
您可以使用@RelationId
导出的typeorm
装饰器。 使用您的示例:
import {
Column,
Entity,
ManyToOne,
RelationId,
JoinColumn,
} from 'typeorm'
@Entity()
export class Position {
@ManyToOne(() => Project, {
nullable: false,
eager: false,
})
@JoinColumn()
project: Project;
@Column()
@RelationId((position: Position) => position.project)
projectId: string;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.