postgresql - Knex 不返回连接 SQL 查询
问题描述
function list() {
return knex('restaurants')
.join('owners', 'restaurants.owner_id', 'owners.owner_id')
.select('restaurants.restaurant_name', 'owners.owner.name', 'owners.email')
.orderBy('owners.owner_name');
}
function listAverageRatingByOwner() {
return knex('restaurants')
.join('owners', 'restaurants.owner_id', 'owners.owner_id')
.select('owners.owner_name')
.avg('restaurants.ratings');
}
在控制器中:
async function listAverageRatingByOwner(req, res, next) {
const averageRatingByOwner = service.listAverageRatingByOwner();
console.log(averageRatingByOwner);
res.json();
}
我不确定为什么它不返回连接查询结果而是返回它。
餐厅表:restaurant_id(主键) restaurant_name(必填字符串)美食(必填字符串)地址(必填字符串) rating(可选数字) owner_id(必填外键)
所有者表: owner_id(主键) owner_name(必填字符串) email(必填字符串) address(必填字符串)
解决方案
Knex 查询生成器返回 a Promise
,因此您应该await
使用它来获取结果集。
// controller
async function listAverageRatingByOwner(req, res, next) {
const averageRatingByOwner = await service.listAverageRatingByOwner();
// ---------------------------^
console.log(averageRatingByOwner);
res.json();
}
推荐阅读
- nginx - nginx 作为 rtmp 服务器 - 资源解释为样式表,但使用 MIME 类型文本/xml 加载统计信息传输
- java - 随机布尔值始终为假
- c++ - 在 VS 调试器中查看映射条目
- javascript - 密码验证脚本不会返回 false 以防止表单在提交时提交
- php - Do...while 循环从 DB 中获取随机行
- angular - 将 formGroup 用于 2 个过滤器
- docker - Dockerfile COPY 失败:stat /var/lib/docker/tmp/docker-XXXX
- firebase - 模拟器拒绝将新数据设置到 Firebase 数据库
- sql-server - SQL Server Management Studio 2016 的连接超时
- macos - Docker -- 如何在启动时将目录挂载为卷(在 MacOS 中)