У меня есть база данных postgres, представляющая простой демонстрационный форум.Существуют две таблицы с именами
topic
id | topic_id (the parent topic) | name | description
-------------------------------------------------------
uuid | uuid | text | text
и thread
id | topic_id | name | created_at
-------------------------------------------------------
uuid | uuid | text | timestamp without timezone
При использовании Express REST APIЯ хочу получить всю информацию по одной теме.Я передаю его ID и хотел бы получить такой результат
{
parentTopic: {}, // could be null if no parent is available
name: "",
description: "",
childTopics: [{}, {}, {}],
threads: [{}, {}, {}] // should be sorted by created_at
}
Насколько я знаю, невозможно вернуть такой результат.Но я попытался создать запрос, чтобы получить эту информацию, и, возможно, я смогу сопоставить это позже с некоторым кодом.
SELECT
currentTopic.name,
currentTopic.description,
parentTopic.id AS parentTopicId,
parentTopic.name AS parentTopicName,
parentTopic.description AS parentTopicDescription,
childTopic.id AS childTopicId,
childTopic.name AS childTopicName,
childTopic.description AS childTopicDescription,
linkedThread.id AS threadId,
linkedThread.name AS threadName,
linkedThread.created_at AS threadCreatedAt
FROM
topic currentTopic
INNER JOIN
topic parentTopic ON currentTopic.topic_id = parentTopic.id
INNER JOIN
topic childTopic ON currentTopic.id = childTopic.topic_id
INNER JOIN
thread linkedThread ON currentTopic.id = linkedThread.topic_id
WHERE
currentTopic.id = '624aaab6-2d2d-45dc-a425-c2863f05779c'
ORDER BY
linkedThread.created_at;
При выполнении этого (я использую pgAdmin), я не вижу никакой ошибки, но я получаю 0 возвращенных строк,Я убедился, что должны быть какие-то записи для извлечения.
Что-то не так с этим запросом?Есть ли способ улучшить запрос, чтобы он возвращал мне готовый к использованию результат (объект JS, о котором я упоминал выше)?
Редактировать:
Вот некоторые тестовые данные для потоков иТемы
Таблица тем:
Таблица тем: