使用
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"
},
},
}
但我只想选择嵌套对象(关系)中必要的属性并获取如下所示的对象列表:
Budget {
id: 1,
contact: Contact {
photo: Photo {
url: "url.com"
},
},
}
TypeORM 怎么可能?
如果您使用存储库模式,您将获得类似的结果:
await this.budgetRepository.find({
relations: ["contact", "contact.photo"]
select: {
contactfield1: true,
contactfield2: true,
photo: {
phototfield1: true,
phototfield2: true,
}
}
})
这是可能的,但我们必须使用
.select()
手动选择所有内容
await this.budgetRepository.createQueryBuilder("budget")
.leftJoinAndSelect("budget.contact", "contact")
.leftJoinAndSelect("contact.photo", "contactPhoto")
.select(['budget.id', 'contactPhoto.url']
.getMany();
您必须使用
.select()
函数并传递您想要为每个实体提供的给定属性。
举个例子:
const user = await createQueryBuilder("budget")
.leftJoinAndSelect("budget.contact", "contact")
.leftJoinAndSelect("contact.photo", "contactPhoto")
.select([/* everything from budget */, 'contact.photo.url'....]) // added selection
.getMany();