рекурсивное дерево в виде списка (элементов массива) в новом значении атрибута child - PullRequest
1 голос
/ 11 июля 2019

Как получить данные иерархии (рекурсивное дерево) в виде нового столбца, как показано ниже?(если есть последний дочерний элемент, то столбец child массив пуст)
, поскольку я делаю это с помощью node-postgres, он уже возвращает json, поэтому я сделал другую версию, использующую row_to_json, чтобы легче было понять мой вопрос

WITH RECURSIVE t AS (
SELECT t.id AS id FROM category AS t WHERE parent_id = 1
UNION ALL
SELECT child.id FROM category AS child JOIN t ON t.id = child.parent_id
) 
SELECT row_to_json(row) FROM (
  SELECT * FROM category WHERE id IN (SELECT * FROM t)
) row;

https://www.db -fiddle.com / f/ ufnG1WpBX4Z8jsBEg6bsLs / 5

возвращает данные, как показано ниже

[
{"id":3,"parent_id":1,"name":"a1"},
{"id":4,"parent_id":3,"name":"a2"}
]

ожидаемый результат

{"id":3,"parent_id":1,"name":"a1", "child": [{"id":4,"parent_id":3,"name":"a2"}]}
...