gpt4 book ai didi

TypeORM:仅加载某些指定字段的关系

转载 作者:行者123 更新时间:2023-12-05 08:50:48 28 4
gpt4 key购买 nike

尽管进行了大量研究和反复试验,但不幸的是,我还没有针对以下用例的完美解决方案:一个用户有多个帖子,这被正确地实现为一对多关系。我想为用户加载他的所有帖子,但不是帖子的所有属性只有某些属性

方法 1:查找

await this.usersRepository.find({relations: ['posts']});

这里我无法在任何地方定义相应的选择限制。

方法 2:QueryBuilder

await this.usersRepository.createQueryBuilder('user')
.leftJoinAndSelect('user.posts', 'posts').select('posts.title').getMany();

这里我假设定义了限制,但是select似乎只指用户。

我错过了什么吗?或者我的用例没有预期的解决方案?

非常感谢您的帮助,谢谢大家!

TypeORM 版本 0.2.22

最佳答案

我能够得到您期望的适当结果。如果你不想,你不必使用 getRawMany,并且需要嵌套对象,就像我在 getManygetManyAndCount 中做的那样我的架构的构建方式。

也就是说,如果您在实体中设置了正确的 OneToMany 关系

@OneToMany(type => Post, post => post.user)
posts: Post

那你应该可以打

const userResults: any = await getRepository(entities.User)
.createQueryBuilder('user')
.leftJoinAndSelect('user.posts', 'posts')
.select([
'posts.name',
'user.id'
])
.getMany()

结果

userResults User {
id: 3,
posts: [ Post { name: 'asdfasdfasdf' }, Post { name: 'asdf' } ] }

希望这对您有所帮助,和/或您已经解决了这个问题。

关于TypeORM:仅加载某些指定字段的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61209628/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com