无法从 express 中加入的 sql table 访问数据
Trouble accessing data from a joined sql table in express
我正在使用 express 和 postgreSQL 创建一个 api 来显示给定区域的餐厅评级、评论和美食。到目前为止,我已经成功地创建了将在邮递员中显示 sql table 的路由和控制器。
但是,当我试图利用 sql 中加入的 table 的数据时,我的问题就出现了。我知道如何使用 JOIN 在 sql 中指定我想要的数据,但我的问题是一旦我有了这些数据,我如何从加入的 table 中获取数据并使 api 发送一个使用精选数据进行响应。这是我的 tables:
第一个 table 是地区 table,第二个 table 是餐馆 table。他们都共享一个 area_id,我在第三个 table 中使用了这个 table,这是加入的 table。这是我特别想访问的table(右下角)中的城市名称...
这是我的 express controller 处理获取特定 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 数据库以创建连接的 table,但是在作为响应发送的对象中(.then 之后)我有'name' 的键 - 这里的值需要是加入的 table 中的 'manchester city centre'...但经过多次尝试我不知道该怎么做..
在邮递员中,我请求查看 area_id '1' 中的餐馆:http://localhost:9090/api/areas/1/restaurants
这是客户端从上面的代码接收到的内容..
所以除了最后一点之外一切正常,从加入的 table 中获取城市名称。
希望这不是一个菜鸟问题,但我是菜鸟呵呵。
感谢任何回复。
想通了。非常简单的解决方案,不知道为什么我错过了这个...
名称:餐厅[0].名称
我正在使用 express 和 postgreSQL 创建一个 api 来显示给定区域的餐厅评级、评论和美食。到目前为止,我已经成功地创建了将在邮递员中显示 sql table 的路由和控制器。
但是,当我试图利用 sql 中加入的 table 的数据时,我的问题就出现了。我知道如何使用 JOIN 在 sql 中指定我想要的数据,但我的问题是一旦我有了这些数据,我如何从加入的 table 中获取数据并使 api 发送一个使用精选数据进行响应。这是我的 tables:
第一个 table 是地区 table,第二个 table 是餐馆 table。他们都共享一个 area_id,我在第三个 table 中使用了这个 table,这是加入的 table。这是我特别想访问的table(右下角)中的城市名称...
这是我的 express controller 处理获取特定 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 数据库以创建连接的 table,但是在作为响应发送的对象中(.then 之后)我有'name' 的键 - 这里的值需要是加入的 table 中的 'manchester city centre'...但经过多次尝试我不知道该怎么做..
在邮递员中,我请求查看 area_id '1' 中的餐馆:http://localhost:9090/api/areas/1/restaurants
这是客户端从上面的代码接收到的内容..
所以除了最后一点之外一切正常,从加入的 table 中获取城市名称。
希望这不是一个菜鸟问题,但我是菜鸟呵呵。 感谢任何回复。
想通了。非常简单的解决方案,不知道为什么我错过了这个...
名称:餐厅[0].名称