Используйте «take», а также очистите пустые результаты на конструкторе реляционных запросов - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть несколько сложный запрос для TypeORM, и я не уверен, как его достичь.

У меня есть объект Department, который может иметь 0 или много заданий (из объекта Job). При извлечении этой сущности и ее отношения с заданиями я хочу выбрать только 5 заданий, но я также хочу полностью избегать выбора этого, если нет заданий.

Прямо сейчас мой запрос выглядит так:

const repo = db.getRepository(Department)

const departments = (
  await repo
    .createQueryBuilder('department')
    .leftJoinAndSelect('department.jobs', 'job')
    .where({ 'department.companyId': company.id })
    .orderBy('job.updatedAt', 'DESC')
    .getMany()
).filter(department => department.jobs.length)

departments.forEach(department => (department.jobs = department.jobs.slice(0, 5)))

Мой код работает, но он неэффективен. Я пытался использовать take, но я считаю, что он не работает со строителями реляционных запросов. Я также пытался limit, но он возвращает неточные результаты.

Есть ли способ сделать всю эту логику c в конструкторе запросов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...