如何在 Typeorm 中获取嵌套实体?

rim*_*lin 5 javascript typescript typeorm

如何正确获取嵌套实体?例如,我进行以下查询:

const houseId = 1;
const userId = 1;

const house = await this.houseRepository.findOne({
  id: houseId,
}, {
  where: {
    project: {
      user: {
        id: userId,
      }
    }
  },
  relations: ['project', 'project.user']
});
Run Code Online (Sandbox Code Playgroud)

结果,house变量包含project实体,但project不包含user。如何user纳入project?据我从文档中了解到,实体user中的属性project被声明为惰性属性,如果我想获取它,我应该解决它:

const user = await house.project.user;
console.log(user);
-> undefined
Run Code Online (Sandbox Code Playgroud)

但是解析user在控制台中给出了未定义,特别是因为它在解析之前未定义。

房屋实体类:

@Entity('house')
export class HouseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @ManyToOne(type => ProjectEntity, { eager: true })
  project: ProjectEntity;
}
Run Code Online (Sandbox Code Playgroud)

项目实体类:

@Entity('project')
export class ProjectEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @ManyToOne(type => UserEntity, user => user.projects)
  user: UserEntity;
}
Run Code Online (Sandbox Code Playgroud)

用户实体类:

@Entity('user')
export class UserEntity {

  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  first_name: string;

  @OneToMany(type => ProjectEntity, project => project.user)
  projects: ProjectEntity[];
}
Run Code Online (Sandbox Code Playgroud)