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

如何通过PostgreSQL视图/函数获取ID数组并适配Postgrest输出

实现Postgrest返回纯值数组的方法

你可以通过两种方式实现需求:利用聚合函数创建视图,或者创建返回数组类型的SQL函数,后者能更直接地让Postgrest返回纯JSON数组。

方法1:创建返回数组的视图

先修正原视图的语法错误,使用array_agg聚合所有去重后的值为一个数组:

CREATE VIEW api.value_list AS
SELECT array_agg(DISTINCT value ORDER BY value) AS values
FROM db.table;

查询该视图时,通过Postgrest的single参数提取数组:

GET /api/value_list?select=values&single

此时响应会是:

["xyz", "zyx"]

方法2:创建返回数组类型的SQL函数

这种方式更直接,函数直接返回数组类型,Postgrest调用时会直接输出纯JSON数组:

CREATE OR REPLACE FUNCTION api.get_values()
RETURNS text[] AS $$
-- 若value字段为其他类型,替换成对应数组类型(如int[])
SELECT array_agg(DISTINCT value ORDER BY value)
FROM db.table;
$$ LANGUAGE sql STABLE;

通过Postgrest调用该函数:

GET /rpc/get_values

就能得到你想要的纯数组响应:

["xyz", "zyx"]

关键说明

原视图返回的是多行单列数据,Postgrest会自动将每行转换为包含字段名的JSON对象;而聚合后的数组是单行单列的数组值,或者函数直接返回数组类型,Postgrest会将其序列化为纯JSON数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:55:27