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

Nestjs-query:如何按一对一关联字段进行排序?

基于嵌套关联的排序支持情况

是的,nestjs-query 支持基于嵌套关联的排序操作,和你展示的嵌套过滤方式类似,不过需要注意一些配置细节,尤其是在使用 TypeORM 和 FilterableRelation 的场景下。

配置前提

  • 确保关联字段已使用 @FilterableRelation() 装饰器,且实体间的 TypeORM 关联关系(如 @OneToMany、@ManyToOne)配置正确。
  • 关联实体中用于排序的字段,需在其 DTO 中通过 @SortableField() 标记为可排序。
  • 已开启的 lookahead 选项会自动处理嵌套字段的解析逻辑,无需额外配置。

嵌套排序示例查询

你可以通过点路径语法指定嵌套关联的排序字段,示例如下:

{
  todoItems(
    filter: {nested: {completed: {is: true}}},
    sorting: [
      {field: "nested.completed", direction: "DESC"},
      {field: "title", direction: "ASC"}
    ]
  ){
    pageInfo{
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
    edges{
      node{
        id
        title
        completed
        created
        updated
        nested {
          id
          completed
        }
      }
      cursor
    }
  }
}

注意事项

  • 排序字段路径需严格对应:关联字段名.目标字段名,比如示例中的 nested.completed,nested 是主实体中定义的关联字段名称。
  • 对于一对多、多对多关联,排序可能会产生重复的主实体记录,nestjs-query 结合分页逻辑时会自动处理去重;若无需分页,需手动添加去重配置。
  • TypeORM 对不同关联类型的排序支持存在差异:@ManyToOne 关联的排序直接可行;@OneToMany 关联需确保查询时正确建立表关联。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:20:00