繁体   English   中英

TypeORM select 来自嵌套关系的数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM