【问题标题】:Knex not returning join SQL queryKnex 不返回连接 SQL 查询
【发布时间】:2021-05-16 19:32:20
【问题描述】:
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(主键) 餐厅名称(必填字符串) 美食(必填字符串) 地址(必填字符串) 评级(可选数字) owner_id(必填外键)

所有者表: owner_id(主键) 所有者名称(必填字符串) 电子邮件(必填字符串) 地址(必填)

【问题讨论】:

  • 会不会是因为你没有等待这一行const averageRatingByOwner = await service.listAverageRatingByOwner();?所以你不记录结果,而是记录 Promise

标签: postgresql express knex.js


【解决方案1】:

Knex 查询生成器返回一个Promise,因此您应该await 它来获取您的结果集。

// controller

async function listAverageRatingByOwner(req, res, next) {
  const averageRatingByOwner = await service.listAverageRatingByOwner();
  // ---------------------------^
  console.log(averageRatingByOwner);
  res.json();
}

【讨论】:

    猜你喜欢
    • 2021-02-20
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多