簡體   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