javascript - 从 Express 中连接的 sql 表访问数据时遇到问题
问题描述
我正在使用 express 和 postgreSQL 创建一个显示给定区域的餐厅评级、评论和美食的 api。到目前为止,我已经设法创建了将在 postman 中显示 sql 表的路由和控制器。
但是,当尝试利用 sql 中连接表中的数据时,会出现我的问题。我知道如何使用 JOIN 在 sql 中指定我想要的数据,但我的问题是一旦我有了这些数据,我如何从连接的表中获取数据并让 api 发送带有精选数据的响应。这是我的表:
第一个表是区域表,第二个表是餐厅表。他们都共享一个 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].name
推荐阅读
- android - Android Studio IDE - 设计编辑器中不显示任何元素
- ios - 如何在不询问 iOS Swift 登录的情况下自动登录?
- jquery - 要在文本框中输入金额,值会自动转换为成本格式吗?
- avplayer - 关于 KVO key path operationCount 的 AVPlayerLayer 崩溃
- apple-push-notifications - 使用 http2 的 Apns 推送主题
- php - 为什么我在 Laravel 中收到此错误?
- node.js - 通过 safe-Url 使用 NodeJS 客户端 API 查询数据存储实体
- asp.net - Asp MVC 模型实体验证不显示必需的错误
- capybara - Capybara + RSpec + rbenv + Gitlab Runner: Selenium::WebDriver::Error::WebDriverError: 无法连接到 chromedriver 127.0.0.1:9515
- php - 在一种形式中使用多个 select2 时发现 4 个具有非唯一 id 的元素