我正在使用express和postgreSQL创建一个API,以显示给定区域的餐厅评分,评论和美食。到目前为止,我已经设法创建了将在邮递员中显示sql表的路由和控制器。
但是,当尝试利用sql中联接表中的数据时,发生了我的问题。我知道如何使用JOIN在sql中指定我想要的数据,但是我的问题是一旦获得该数据,我该如何从联接表中获取数据并使api发送经过精心挑选的数据的响应。这是我的桌子:
第一个表是Areas表,第二个表是restaurant表。他们两个都共享一个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 db以创建联接表,但是在作为响应发送的对象中(.then之后),我有“名称”的键-这里的值需要从联接表中成为“曼彻斯特市中心” ...但是经过大量尝试后,我不知道该怎么做。
在邮递员中,我请求查看area_id'1'中的餐馆:http://localhost:9090/api/areas/1/restaurants
这是上面的代码从客户端接收的内容。
所有工作都从最后一点开始进行,从联接表中获取城市名称。
希望这不是一个菜鸟问题,但是我是菜鸟。 感谢任何回应。
答案 0 :(得分:0)
弄清楚了。很简单的解决方案,不知道为什么我错过了这个...
名称:餐厅[0]。名称