当按别名排序并使用 take &skip 时,TypeORM“SELECT DISTINCT 的错误 [ExceptionsHandler],ORDER BY 表达式必须出现在选择列表中”

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

我将 NestJS 与 TypeORM 和 Postgres 数据库结合使用。
我正在计算汽车下次需要检查多少公里,并使用该值来订购我从中选择的汽车列表。

到目前为止,这工作得很好,但是当我尝试使用skip和take对结果进行分页时,我收到错误:

ERROR [ExceptionsHandler] for SELECT DISTINCT, ORDER BY expressions must appear in select list

这是代码:

const dbQuery = this.carsRepository
  .createQueryBuilder('car')
  .addSelect(
    `(floor((car.milage + 5000) / vehicleType.inspectionIntervalInKm) * vehicleType.inspectionIntervalInKm - car.milage) as nextInspectionDueInKm`,
  )
  .leftJoinAndSelect('car.vehicleType', 'vehicleType')
  .orderBy('nextInspectionDueInKm', Order.ASC)
  .skip(page * limit)
  .take(limit);
const result = await dbQuery.getMany()

我用谷歌搜索并尝试了很多方法,但找不到有效的解决方案。所以也许这里有人可以帮助我解决这个小问题:)

postgresql nestjs typeorm query-builder
1个回答
0
投票

你必须像这样在变量中添加双引号

.addSelect(
    `(floor((car.milage + 5000) / vehicleType.inspectionIntervalInKm) * vehicleType.inspectionIntervalInKm - car.milage) as "nextInspectionDueInKm"`,
  )
© www.soinside.com 2019 - 2024. All rights reserved.