#sql #postgresql #node-postgres
Вопрос:
Я использую node-postgres для возврата объединенной таблицы во внешний интерфейс моего приложения React через экспресс-сервер. Вот запрос…
SELECT channels.name as channels, programmes.title as title, series.number as series, episodes.episode_number as episode
FROM programmes
INNER JOIN programme_channels ON programme_channels.programme_id = programmes.programme_id
INNER JOIN channels ON programme_channels.channel_id = channels.channel_id
INNER JOIN series ON programmes.programme_id = series.programme_id
INNER JOIN episodes ON series.series_id = episodes.series_id
Это работает по мере необходимости, однако я бы хотел, чтобы интерфейсные пользователи могли обновлять или удалять столбцы таблицы. Для этого каждая ячейка моей таблицы должна была бы знать происхождение своих данных. В настоящее время запрос, который у меня есть, возвращает таблицу, подобную этой…
channel | title | series | episode
-------------- ------------ --------------- ---------
Some Channel | Some title | 1 | 1
Где канал из каналов, название, серия и эпизод-все из разных таблиц. Чтобы пользователь мог обновить или удалить эти данные, ему потребуются исходные данные каждого столбца для запроса.
Запрос node-postgres возвращает дополнительную информацию, которая может быть полезна для этого в виде массива полей…
fields: [
Field {
name: 'title',
tableID: 16554,
columnID: 2,
dataTypeID: 1043,
dataTypeSize: -1,
dataTypeModifier: 104,
format: 'text'
},
...]
и я могу вернуть таблицу с исходным именем таблицы столбца, используя этот запрос…
SELECT relname
FROM pg_catalog.pg_statio_user_tables
WHERE relid = '16554'
Результат…
relname
----------
programmes
однако я не уверен, как использовать результаты этого для запроса таблицы «программы». Вот тут я уперся в стену. Мои вопросы таковы…
- Правильно ли я поступаю, или есть более простой способ обновить данные, возвращенные из объединенной таблицы?
- Если да, то могу ли я каким-либо образом ВЫБРАТЬ таблицу либо
relid
по результатам запроса, либо по результатам запроса.
Комментарии:
1. Я думаю, что общепринятое решение состоит в том, чтобы ваше приложение React семантически понимало источник всех данных. Поэтому, если пользователь нажимает на поле, редактирует его и нажимает «Сохранить», то React знает, какой столбец обновлен, и выдает правильные вызовы api серверной части (express) для обновления данных. Обычно в наши дни используются API RESTful.