TypeORM: загрузка отношений только с определенными указанными полями - PullRequest
0 голосов
/ 14 апреля 2020

Несмотря на большое количество исследований, проб и ошибок, к сожалению, у меня пока нет элегантного решения для следующего варианта использования: у пользователя есть несколько постов, которые правильно реализованы как отношение «один ко многим», Я хочу загрузить пользователя всеми его сообщениями, но не всеми атрибутами сообщений, только определенными .

Подход 1: Найти

await this.usersRepository.find({relations: ['posts']});

Здесь я нигде не могу определить соответствующее ограничение выбора.

Подход 2: QueryBuilder

await this.usersRepository.createQueryBuilder('user')
.leftJoinAndSelect('user.posts', 'posts').select('posts.title').getMany();

Здесь я определяю якобы ограничение, но выбор, кажется, относится только к пользователю.

Я что-то упустил? Или нет никакого предназначенного решения для моего варианта использования?

Я был бы очень признателен за помощь, спасибо, ребята!

TypeORM версия 0.2.22

1 Ответ

1 голос
/ 15 апреля 2020

Используйте getRawMany () вместо getMany (), если вы хотите выбрать некоторые поля

try

await this.usersRepository.createQueryBuilder('user')
.leftJoinAndSelect('user.posts', 'posts')
.select('posts.title')
.getRawMany();

Для получения дополнительной информации: https://github.com/typeorm/typeorm/blob/master/docs/select-query-builder.md#getting -values-using- QueryBuilder

...