Таблица запросов с использованием relid вместо имени таблицы

#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
 

однако я не уверен, как использовать результаты этого для запроса таблицы «программы». Вот тут я уперся в стену. Мои вопросы таковы…

  1. Правильно ли я поступаю, или есть более простой способ обновить данные, возвращенные из объединенной таблицы?
  2. Если да, то могу ли я каким-либо образом ВЫБРАТЬ таблицу либо relid по результатам запроса, либо по результатам запроса.

Комментарии:

1. Я думаю, что общепринятое решение состоит в том, чтобы ваше приложение React семантически понимало источник всех данных. Поэтому, если пользователь нажимает на поле, редактирует его и нажимает «Сохранить», то React знает, какой столбец обновлен, и выдает правильные вызовы api серверной части (express) для обновления данных. Обычно в наши дни используются API RESTful.