TypeORM queryBuilder:orderBy 关系计数

问题描述 投票:0回答:1

我有一个基本查询来检索与

course
具有多对多关系的
student
实体,如
registered_students
。我还想映射一个
students_count
属性,我通过
loadRelationCountAndMap
成功实现了。

我不明白的是如何

orderBy
students_count
值不是
course
实体的列:

return await this.courseRepository
      .createQueryBuilder('course')
      .where('course.teacherId = :teacherId', { teacherId: teacher.id })
      .leftJoin('course.registered_students', 'student')
      .addSelect('student.firstName')
      .addSelect('student.lastName')
      .loadRelationCountAndMap(
        'course.students_count',
        'course.registered_students',
        'students_count',
      )
      .getMany();

我知道我不能简单地添加一些东西

.orderBy('course.students_count', 'DESC')
,因为它不引用列,但我找不到一个简单的方法,即使它看起来微不足道......

postgresql typeorm
1个回答
0
投票

这个问题已经出现在我面前,由于没有对此做出回应,我担心这是不可能的。 我的解决方法是,鉴于我的 QueryBuilder 调用返回一个承诺,请附加:

.then(
([entities,count]) => {
entities.sort(yourSortFunctionHere);
return entities;
})

一个简单的记忆排序。不漂亮,但提供了所需的功能。

© www.soinside.com 2019 - 2024. All rights reserved.