我正在构建一个后端微服务,该服务使用postgres作为数据库和TypeORM(NodeJs)库来管理与之的连接。
想象一下,我的数据库包含3个表/实体。
a)我可以执行一个复杂的查询来获取个人资料行和与其链接的所有体验行吗?
getFullProfile(profileId: number) {
return this.profileEntityRepository.createQueryBuilder('profile')
.where('profile.id = :profileId', { profileId })
.innerJoinAndMapMany('profile.experience', ExperienceEntity, 'experience', 'experience.id = profile.id')
.getOne();
}
可悲的是,这不会返回任何结果(如果我注释了innerJoinAndMapMany行,则会返回结果)。
有什么建议吗?不必是基于TypeORM api的答案,简单的普通查询就足够了。
谢谢!
答案 0 :(得分:0)
好,我解决了。
我将typeORM查询更改为此:
getFullProfile(profileId: number) {
return this.profileEntityRepository.createQueryBuilder('profile')
.leftJoinAndSelect('profile.experiences', 'experience')
.where('profile.id = :profileId', { profileId })
.getOne();
}
要执行此操作,我还需要在配置文件实体中添加OneToMany列,如下所示:
@OneToMany(type => ExperienceEntity, experience => experience.profile)
experiences: ExperienceEntity[];
这不会在表中创建“经验”列,但是TypeORM才需要了解这种情况。