You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TypeORM中按PostgreSQL枚举字段的文本值排序?

在TypeORM中实现枚举字段按文本值排序

要在TypeORM中实现和PostgreSQL原生order by "Country"."continent"::TEXT DESC相同的枚举文本排序效果,不能直接用对象形式指定字段排序——默认会按枚举的底层存储值(通常是数字或枚举常量的内部标识)排序,而非文本值。需要借助TypeORM的Raw函数构造原生SQL排序片段:

  1. 先导入Raw工具函数:
import { Raw } from "typeorm";
  1. 修改你的orderBy配置,用Raw生成带类型转换的排序表达式:
orderBy = {
  ...orderBy,
  continent: Raw(alias => `${alias}::TEXT ${value.sort}`)
};

说明:

  • Raw的回调参数alias会被TypeORM自动替换为当前字段的完整别名(比如"Country"."continent"),不用手动写死表名/字段名。
  • ${alias}::TEXT对应PostgreSQL的枚举转文本类型转换,${value.sort}传入你的排序方向(ASC或DESC),最终生成的SQL和你手动编写的完全一致。
  • 确保value.sort是合法的排序方向字符串,避免非法输入引发SQL语法错误。

内容的提问来源于stack exchange,提问作者killjoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 10:17:04