无法从Express中的已连接SQL表访问数据

时间:2019-02-15 22:05:40

标签: javascript postgresql express pg-promise

我正在使用express和postgreSQL创建一个API,以显示给定区域的餐厅评分,评论和美食。到目前为止,我已经设法创建了将在邮递员中显示sql表的路由和控制器。

但是,当尝试利用sql中联接表中的数据时,发生了我的问题。我知道如何使用JOIN在sql中指定我想要的数据,但是我的问题是一旦获得该数据,我该如何从联接表中获取数据并使api发送经过精心挑选的数据的响应。这是我的桌子:

sql tables

第一个表是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

这是上面的代码从客户端接收的内容。

client side postman

所有工作都从最后一点开始进行,从联接表中获取城市名称。

希望这不是一个菜鸟问题,但是我是菜鸟。 感谢任何回应。

1 个答案:

答案 0 :(得分:0)

弄清楚了。很简单的解决方案,不知道为什么我错过了这个...

名称:餐厅[0]。名称