Node.js 如何在TypeForm(postgresql)中进行内部联接
我有两个实体:Node.js 如何在TypeForm(postgresql)中进行内部联接,node.js,typescript,postgresql,inner-join,typeorm,Node.js,Typescript,Postgresql,Inner Join,Typeorm,我有两个实体: @Entity() 导出类成员{ @PrimaryColumn({name:'room_id'}) 室友:号码; @主列() 电子邮件:字符串; @列({name:'is_room_owner'}) isRoomOwner:布尔型; @列('timestamp without timezone',{name:'joined_at',null:true}) joinedAt:日期|空; @CreateDateColumn({name:'created_at'}) createdAt
@Entity()
导出类成员{
@PrimaryColumn({name:'room_id'})
室友:号码;
@主列()
电子邮件:字符串;
@列({name:'is_room_owner'})
isRoomOwner:布尔型;
@列('timestamp without timezone',{name:'joined_at',null:true})
joinedAt:日期|空;
@CreateDateColumn({name:'created_at'})
createdAt:日期;
@许多人(()=>Room,Room=>Room.members)
@JoinColumn({name:'room_id'})
房间:房间;
}
@Entity()
出口教室{
@PrimaryGeneratedColumn({name:'room_id'})
室友:号码;
@第()列
名称!:字符串;
@第()列
永久性!:布尔;
@第()列
活动!:布尔值;
@CreateDateColumn({name:'created_at'})
createdAt:日期;
@UpdateDateColumn({name:'updated_at'})
更新日期:日期;
@OneToMany(()=>Member,Member=>Member.room,{cascade:true})
成员:成员[];
}
我想通过会员的电子邮件获取房间,如果房间处于活动状态,则进行过滤。
基本上在sql中是这样的:
从文件室“文件室”中选择“文件室”。*,“成员”。*
“member.roomId=”room.roomId“上的内部加入成员“member”
其中“房间”。活动=:活动和“成员”。电子邮件=:电子邮件;
它应该包括成员
我已经习惯打字了,所以非常感谢您的帮助 可以使用查询生成器构建查询,如下所示-
async getRoomsByMember(active: boolean, email: string): Promise<any[]> {
return await getRepository(Room)
.createQueryBuilder('room')
.innerJoinAndSelect('room.member', 'member')
.where("room.active = :active", {active: active})
.andWhere("member.email = :email", { email: email })
.getMany();
}
异步getRoomsByMember(活动:布尔,电子邮件:字符串):承诺{
返回等待获取存储库(房间)
.createQueryBuilder(“房间”)
.innerJoinAndSelect('room.member','member')
.where(“room.active=:active”,{active:active})
.andWhere(“member.email=:email”,{email:email})
.getMany();
}
您想使用查询生成器生成查询,还是更喜欢使用标准CRUD API?我不知道。。最好的方法是什么?从我在文档中看到的情况来看,我可能会经常使用QueryBuilderHanks!我刚刚不得不从“房间.电子邮件”改为“会员.电子邮件”。我很乐意按照要求进行更改!