【问题标题】:Typeorm oneToOne relationTypeorm oneToOne 关系
【发布时间】:2021-06-10 11:37:30
【问题描述】:

您好,我在“房间”和“房间服务器”之间有关系

房间服务器:

@Entity({ name: 'room-servers' })
export class RoomServer {
  @PrimaryGeneratedColumn()
  id: number;

  @CreateDateColumn()
  createdAt: Date;

  @UpdateDateColumn()
  updatedAt: Date;
}

房间:

@Entity({ name: 'rooms' })
export class Room {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ default: '' })
  name: string;

  @Column({ nullable: true })
  description: string;


  @Column({ default: 'New' })
  status: string;

  @OneToOne(() => RoomServer, { nullable: false })
  @JoinColumn()
  roomServer: RoomServer;
}

当我输入 sql 查询时

select * from "room-servers" rm left join rooms r on rm.id = r."roomServerId";

它返回结果(我在数据库中有 3 个服务器)

但是当我尝试使用 queryBuilder 来查看结果时:

    const freeSocketServers = await this.roomServerRepository
      .createQueryBuilder('room-servers')
      .leftJoinAndSelect('room-servers.id', 'roomServerId')
      .getMany();

    console.log('freeSocketServer', freeSocketServers);

它什么也不返回,我看不到 console.log,它在 .leftJoinAndSelect 上中断

【问题讨论】:

    标签: nestjs typeorm


    【解决方案1】:

    您在room 实体中设置关系,要使其正常工作,您应该从room repository 开始

     const freeSocketServers = await this.roomRepository
      .createQueryBuilder('room')
      .leftJoinAndSelect('room.roomServer', 'room-server')
      .getMany();
    
    console.log('freeSocketServer', freeSocketServers);
    

    或者你可以让它双向查看One-to-One

    【讨论】:

      猜你喜欢
      • 2021-01-01
      • 2023-03-28
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2021-05-19
      相关资源
      最近更新 更多