Плоский массив пользовательских функций PostgREST вместо key: value - PullRequest
1 голос
/ 28 февраля 2020

У меня есть эта пользовательская функция, которая запрашивает группу у источника данных. В результате я получаю уникальный результат запроса, но как вложенные объекты [{substance: 'value'}]. Он предпочел бы, чтобы мой ответ был [value, value, value].

SQL:

create or replace function api.substances(substance_group text) returns table(substance text) 
as 'select api.emissions.substance from api.emissions where api.emissions.substance_group = $1 group by api.emissions.substance;'
language sql;

Ответ:

[
  {
    "substance": "Arseen"
  },
  {
    "substance": "Benzo[b]fluorantheen"
  },
  ...
]

Требуется ответ:

[
  "Arseen",
  "Benzo fluorantheen",
  ...
]

1 Ответ

1 голос
/ 01 марта 2020

Вам нужно будет вернуть массив текста (text[]) вместо table(text) и использовать в запросе функцию array_agg . Нравится:

create or replace function api.substances(substance_group text) returns text[] as $$
  select array_agg(api.emissions.substance)
  from api.emissions
  where api.emissions.substance_group = $1
  group by api.emissions.substance;
$$ language sql;
...