sto*_*nie 2 database-relations typeorm
尽管进行了大量研究和反复试验,但不幸的是,我还没有针对以下用例的优雅解决方案:用户有多个帖子,这些帖子被正确实现为一对多关系。我想向用户加载他的所有帖子,但不是帖子的所有属性,而是仅加载某些属性。
方法一:查找
await this.usersRepository.find({relations: ['posts']});
Run Code Online (Sandbox Code Playgroud)
这里我无法在任何地方定义相应的选择限制。
方法 2:查询生成器
await this.usersRepository.createQueryBuilder('user')
.leftJoinAndSelect('user.posts', 'posts').select('posts.title').getMany();
Run Code Online (Sandbox Code Playgroud)
这里我假设定义了限制,但选择似乎仅指用户。
我错过了什么吗?或者对于我的用例没有预期的解决方案?
我将非常感谢您的帮助,谢谢大家!
TypeORM 版本 0.2.22
我能够得到您所期望的适当结果。如果您不想使用,则不必使用,并且需要像我一样按照我的架构构建方式进行的getRawMany嵌套对象。getManygetManyAndCount
OneToMany话虽这么说,如果您的实体中有正确的关系设置
@OneToMany(type => Post, post => post.user)
posts: Post
Run Code Online (Sandbox Code Playgroud)
那么你应该能够击中
const userResults: any = await getRepository(entities.User)
.createQueryBuilder('user')
.leftJoinAndSelect('user.posts', 'posts')
.select([
'posts.name',
'user.id'
])
.getMany()
Run Code Online (Sandbox Code Playgroud)
这导致
userResults User {
id: 3,
posts: [ Post { name: 'asdfasdfasdf' }, Post { name: 'asdf' } ] }
Run Code Online (Sandbox Code Playgroud)
希望这有帮助,和/或你已经明白了。
| 归档时间: |
|
| 查看次数: |
18982 次 |
| 最近记录: |