typeorm查询

4ioopgfo  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(166)

对不起,如果题目不完美,我不太确定该放什么。
我想在业余时间学习更多关于数据库的知识,所以现在我正在构建一个简单的应用程序,您可以在其中添加标签 meetings . 我不是sql专业人士,所以我使用typeorm来帮助我,而且我也不能100%确定我的数据库结构是否是最好的。但我是这样安排的:
我的table
会议
会议标签
标签
我的想法是一个会议可以有很多标签,meetingtag是会议和标签之间的“桥梁”(可能有一个很好的sql术语)。我把我的实体放在下面,试图只显示重要的东西。
我的实体
会议.ts:

@ManyToMany(() => MeetingTag)
@JoinTable()
meetingTags: MeetingTag[];

会议标签.ts

export class MeetingTag extends BaseEntity {
  @PrimaryColumn()
  meetingId: number;

  @PrimaryColumn()
  tagId: number;

  @Field(() => Tag)
  @ManyToOne(
    () => Tag,
    (tag) => tag.tagsForMeetings,
    { primary: true }
  )
  @JoinColumn({ name: "tagId" })
  tag: Tag;

  @Field(() => Meeting)
  @ManyToOne(
    () => Meeting,
    (meeting) => meeting.meetingTags,
    {
      primary: true,
    }
  )
  @JoinColumn({ name: "meetingId" })
  meeting: Meeting;
}

标签.ts

@OneToMany(
  () => MeetingTag,
  (meetingTag) => meetingTag.tag
)
tagsForMeetings: MeetingTag[];

当我用标记创建一个新的会议时,meetingtags和tags都被成功创建。
标签:

会议标签:

但我的问题是,当我试图通过标签查询会议时。我在用打字机 createQueryBuilder 这样地,

getConnection()
  .getRepository(Meeting)
  .createQueryBuilder("m")
  .innerJoinAndSelect(`m.meetingTags`, `meetingTag`)
  .leftJoinAndSelect("meetingTag.tag", "tag")
  .andWhere("tag.name IN (:...tagNames)", {
    tagNames: ["coding"],
  })

我什么也没得到。我非常坚持这一点,我感谢所有的帮助,我可以得到,如果需要更多的信息,只要让我知道。
感谢您花时间阅读本文。
干杯!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题