带有 getOne 的 createQueryBuilder 没有 return @JoinColumns 在 table Typeorm 中

createQueryBuilder with getOne doesn't return @JoinColumns inside table Typeorm

我有一个用nestjs和typeorm写的项目。在我的项目中,我有 tables chatuser,所以我想获得 ManyToOne 关系。这里是chattable

export class Chat extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;

@ManyToOne(() => User, (user) => user.chatsCreater, { nullable: false })
@JoinColumn({ name: 'creatorId' })
creator: User;

@ManyToOne(() => User, (user) => user.chatsCompanion, { nullable: false })
@JoinColumn({ name: 'companionId' })
companion: User;
}

和来自 user table

的块
...   
@OneToMany(() => Chat, (chat) => chat.creator)
chatsCreater: Chat[];

@OneToMany(() => Chat, (chat) => chat.companion)
chatsCompanion: Chat[];
...

当我从聊天中查询数据时,我希望得到 table {id, companionId, creatorI} 的漏洞,而不仅仅是 chat.id 的值。这是我的查询

.createQueryBuilder('chat')
.where('chat.creatorId = :creatorId AND chat.companionId = :companionId', { creatorId, companionId })
.getOne()

结果{id: 1} 所以我想要的是在我从聊天中查询时也获取 companionId 和 creatorId 的值。 如果我将 getOne() 更改为 getRaw(),我将获得所需的输出。但是在更复杂的查询(具有多个连接)的情况下,getRaw 会变得一团糟,那么有没有办法使用 getOne 获取所有列?

我可以使用 leftJoinAndSelect

.createQueryBuilder('chat')
  .leftJoinAndSelect('chat.creator', 'creator')
  .leftJoinAndSelect('chat.companion', 'companion')
  .where('chat.creatorId = :creatorId AND chat.companionId = :companionId', { creatorId, companionId })
  .getOne();

如果不需要 table 洞,也可以使用不带 select 的 leftJoin,然后添加到查询 addSelect(['creator.id','companion.id'])