首页 > 解决方案 > 从 Express 中连接的 sql 表访问数据时遇到问题

问题描述

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

但是,当尝试利用 sql 中连接表中的数据时,会出现我的问题。我知道如何使用 JOIN 在 sql 中指定我想要的数据,但我的问题是一旦我有了这些数据,我如何从连接的表中获取数据并让 api 发送带有精选数据的响应。这是我的表:

sql表

第一个表是区域表,第二个表是餐厅表。他们都共享一个 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

这是从上面的代码收到的客户端..

客户端邮递员

所以除了最后一点,一切都在工作,从连接表中获取城市名称。

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

标签: javascriptpostgresqlexpresspg-promise

解决方案


算出来。很简单的解决方案,不知道为什么我错过了这个......

名称:餐厅[0].name


推荐阅读