Проблема с упорядочением вложенных сущностей в типорме - PullRequest
0 голосов
/ 08 июля 2020

У меня есть ссылка на себя под названием Category. По сути, это просто папка, которая может содержать подпапки, но подпапки не могут содержать никаких других папок. Просто как тот. Пользователь может перемещать эти папки таким образом, изменяя их положение относительно друг друга. В сущности Category у меня есть опора под названием position, и когда я возвращаю все категории для определенного пользователя c, мне нужно отсортировать их по позиции. Это означает, что запрос должен выглядеть примерно так:

const categories = await this.categoryRepository.createQueryBuilder('category')
                                                .where('category.user.id = :userId', { userId })
                                                .leftJoinAndSelect('category.entries', 'catEntries')
                                                .leftJoinAndSelect('catEntries.images', 'catImages')
                                                .leftJoinAndSelect('category.subcategories', 'subs')
                                                .leftJoinAndSelect('subs.entries', 'subCatEntries')
                                                .leftJoinAndSelect('subCatEntries.images', 'subCatImages')
                                                .orderBy('category.position', 'ASC')
                                                .getMany();

Проблема с этим фрагментом кода заключается в том, что порядок не применяется к подкатегориям. Отсюда мой вопрос: «Как мне написать запрос, который упорядочит не только категории, но и подкатегории?».

Большое спасибо!

1 Ответ

2 голосов
/ 08 июля 2020

Попробуйте добавить addOrderBy('subs.SORT', 'ASC'), где SORT - свойство, по которому вы хотите отсортировать подпрограммы (position?)

Обратите внимание на разницу между OrderBy() и addOrderBy(). Первый переопределяет предыдущие, второй позволяет добавлять несколько предложений order by.

...