Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在TypeForm(postgresql)中进行内部联接_Node.js_Typescript_Postgresql_Inner Join_Typeorm - Fatal编程技术网

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!我刚刚不得不从“房间.电子邮件”改为“会员.电子邮件”。我很乐意按照要求进行更改!