[英]TypeORM select data from nested relations
使用
await this.budgetRepository.createQueryBuilder("budget")
.leftJoinAndSelect("budget.contact", "contact")
.leftJoinAndSelect("contact.photo", "contactPhoto")
.getMany();
我得到一个包含这样的对象的列表:
Budget {
id: 1,
unnecessary_property1: something,
contact: Contact {
unnecessary_property2: something,
photo: Photo {
unnecessary_property3: something,
url: "url.com"
},
},
}
但我只想 select 嵌套对象(关系)中的必要属性并获得这样的对象列表:
Budget {
id: 1,
contact: Contact {
photo: Photo {
url: "url.com"
},
},
}
TypeORM 怎么可能呢?
您必须使用.select()
函数并为每个实体传递所需的给定属性。
对于您的示例:
const user = await createQueryBuilder("budget")
.leftJoinAndSelect("budget.contact", "contact")
.leftJoinAndSelect("contact.photo", "contactPhoto")
.select([/* everything from budget */, 'contact.photo.url'....]) // added selection
.getMany();
如果您使用存储库模式,您将获得类似的结果:
await this.budgetRepository.find({
relations: ["contact", "contact.photo"]
})
这是可能的,但我们必须使用.select()
手动 select 一切
await this.budgetRepository.createQueryBuilder("budget")
.leftJoinAndSelect("budget.contact", "contact")
.leftJoinAndSelect("contact.photo", "contactPhoto")
.select(['budget.id', 'contactPhoto.url']
.getMany();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.