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

如何在Supabase GraphQL中按计算列items_count排序?

如何在Supabase GraphQL中按计算列排序

目前的问题是:通过行级函数定义的items_count计算列可以正常查询,但自动生成的groupOrderBy输入类型里没有这个字段,导致无法按它排序。下面提供可行的解决方案:

方案一:创建包含计算列的视图(推荐)

Supabase的GraphQL生成器会将视图中的列视为普通表字段,自动生成包含该列的排序输入类型。

1. 创建视图

执行以下SQL创建包含items_count的视图:

CREATE OR REPLACE VIEW public.group_with_count AS
SELECT 
  g.id,
  g.name,
  COUNT(i.id) AS items_count
FROM public.group g
LEFT JOIN public.items i ON g.id = i.group_id
GROUP BY g.id, g.name;

2. 使用视图进行查询排序

创建视图后,Supabase会自动生成group_with_countCollection查询和group_with_countOrderBy输入类型,此时就可以按items_count排序了:

query AllGroups($sort: [group_with_countOrderBy!]) {
  group_with_countCollection(orderBy: $sort) {
    edges {
      node {
        id
        name
        items_count
      }
    }
  }
}

你可以传入排序变量,比如:

{
  "sort": [{"items_count": "DESC"}]
}

方案二:扩展GraphQL Schema(进阶)

如果需要保留原group表的查询,可手动扩展GraphQL Schema,添加items_count到groupOrderBy输入类型,并自定义排序逻辑。不过这种方法需要注意:Supabase重新生成Schema时可能会覆盖自定义内容,需要通过PostGraphile的配置或自定义扩展来持久化修改,步骤相对复杂,适合有GraphQL Schema扩展经验的用户。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:12:07