Проблемы с доступом к данным из объединенной таблицы SQL в экспресс - PullRequest
0 голосов
/ 16 февраля 2019

Я использую Express и PostgreSQL для создания API, который показывает рейтинги ресторанов, отзывы и кухню в определенных областях.До сих пор мне удалось создать маршруты и контроллеры, которые будут отображать таблицы sql в почтальоне.

Однако моя проблема возникает при попытке использовать данные из объединенных таблиц в sql.Я знаю, как указать данные, которые я хочу в sql, используя JOIN, но моя проблема заключается в том, как только я получаю эти данные, как мне взять данные из объединенной таблицы и заставить API отправлять ответ с выбранными данными.Вот мои столы:

sql tables

первый стол - стол, второй стол - столик в ресторанах.Они оба используют area_id, который я использовал в третьей таблице, которая является объединенной таблицей.Это название города в объединенной таблице (справа внизу), к которому я особенно хочу получить доступ ...

Вот мой экспресс-контроллер, работающий с запросом на получение всех ресторанов определенного area_id:

const getRestaurantsByAreaId = (req, res, next) => {
  db.many(
    "SELECT * FROM restaurants JOIN areas ON areas.area_id = restaurants.area_id WHERE areas.area_id = $<area_id>",
    {
      area_id: req.params.area_id
    }
  )
    .then(restaurants => {
      res.status(200).send({
        area_id: req.params.area_id,
        name: '',
        total_restaurants: restaurants.length,
        restaurants
      });
    })
    .catch(err => console.log(err));
};

конечная точка маршрутизатора:

areasRouter.get('/:area_id/restaurants', getRestaurantsByAreaId)

Как вы можете видеть, я сделал запрос к базе данных sql для создания объединенной таблицы, однако в объекте, который отправляется как ответ (после.then) У меня есть ключ 'name' - здесь значение должно быть 'manchester city center' из объединенной таблицы ... но я не знаю, как это сделать после долгих попыток ..

У почтальона я делаю запрос на просмотр ресторанов в area_id '1': http://localhost:9090/api/areas/1/restaurants

Вот что получено на стороне клиента из приведенного выше кода ..

client side postman

Так что все работает, кроме последнего, получая название этого города из объединенной таблицы.

Надеюсь, это не слишком сложный вопрос, но я новичок, хе-хе.Цените любые ответы.

1 Ответ

0 голосов
/ 16 февраля 2019

выясняет это.Довольно простое решение, не знаю, почему я пропустил это ...

name: restaurant [0] .name

...