对不起,如果题目不完美,我不太确定该放什么。
我想在业余时间学习更多关于数据库的知识,所以现在我正在构建一个简单的应用程序,您可以在其中添加标签 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"],
})
我什么也没得到。我非常坚持这一点,我感谢所有的帮助,我可以得到,如果需要更多的信息,只要让我知道。
感谢您花时间阅读本文。
干杯!
暂无答案!
目前还没有任何答案,快来回答吧!