Я использую Express и PostgreSQL для создания API, который показывает рейтинги ресторанов, отзывы и кухню в определенных областях.До сих пор мне удалось создать маршруты и контроллеры, которые будут отображать таблицы sql в почтальоне.
Однако моя проблема возникает при попытке использовать данные из объединенных таблиц в sql.Я знаю, как указать данные, которые я хочу в sql, используя JOIN, но моя проблема заключается в том, как только я получаю эти данные, как мне взять данные из объединенной таблицы и заставить API отправлять ответ с выбранными данными.Вот мои столы:
![sql tables](https://i.imgur.com/Fx4E2PX.png)
первый стол - стол, второй стол - столик в ресторанах.Они оба используют 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](https://i.imgur.com/VJ0WpnW.png)
Так что все работает, кроме последнего, получая название этого города из объединенной таблицы.
Надеюсь, это не слишком сложный вопрос, но я новичок, хе-хе.Цените любые ответы.