【发布时间】:2021-06-30 21:57:53
【问题描述】:
我有这两个实体:
@Entity()
export class Member {
@PrimaryColumn({ name: 'room_id' })
roomId: number;
@PrimaryColumn()
email: string;
@Column({ name: 'is_room_owner' })
isRoomOwner: boolean;
@Column('timestamp without time zone', { name: 'joined_at', nullable: true })
joinedAt: Date | null;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@ManyToOne(() => Room, room => room.members)
@JoinColumn({ name: 'room_id' })
room: Room;
}
@Entity()
export class Room {
@PrimaryGeneratedColumn({ name: 'room_id' })
roomId: number;
@Column()
name!: string;
@Column()
permanent!: boolean;
@Column()
active!: boolean;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@UpdateDateColumn({ name: 'updated_at' })
updatedAt: Date;
@OneToMany(() => Member, member => member.room, { cascade: true })
members: Member[];
}
我想通过会员的电子邮件获取房间并过滤它们是否处于活动状态。 基本上在sql中它会是这样的:
select "room".*, "member".* from room "room"
inner join member "member" on "member".roomId = "room".roomId
where "room".active = :active and "member".email = :email;
它应该包括成员。
我已经习惯了 typeorm,所以非常感谢您的帮助!
【问题讨论】:
-
您想使用查询生成器生成查询还是更喜欢使用标准 CRUD API?
-
我不知道.. 最好的方法是什么?从我在文档中看到的内容来看,我可能会使用 QueryBuilder
标签: node.js typescript postgresql inner-join typeorm