繁体   English   中英

TypeORM 如何在不加载关系实体的情况下访问引用关系字段

[英]TypeORM How to access reference relation field without loading relation entity

众所周知,要创建 ManyToOne/OneToMany 关系,我们必须在字段上使用 @ManyToOne/@OneToMany 装饰器。

在我的项目中,我有两个实体: ProjectPosition

这就是我创建关系的方式:

@Entity('positions')
export class Position {

  @ManyToOne(() => Project, {
    nullable: false,
    eager: true,
  })
  @JoinColumn()
  project: Project;

}

TypeORM 文档说此代码将在数据库中创建projectId FOREIGN KEY列并在其中存储项目 ID。

然后,当我们尝试访问project属性时,TypeORM 通过存储在projectId字段中的 id 加载项目。

问题

如何在不加载关系实体的情况下访问该pojectId字段?

默认情况下,属性projectIdPosition实体中不存在,如果我手动创建它,它不会由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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM