Knex.js Select 平均和舍入

Knex.js Select Average and Round

我正在将应用程序从 PHP/MYSQL 切换到 Express,并使用 knex 连接到 MYSQL 数据库。在我的一个查询中,我使用了这样的语句(为简洁起见,我将其缩短。)

SELECT ROUND(AVG(Q1),2) AS Q1 FROM reviews WHERE id=? AND active='1'

如果我使用 knex.raw,我可以使用 ROUND,但我想知道是否有办法使用查询生成器来编写它。使用查询生成器使得在视图端处理输出比尝试导航从原始查询返回的对象容易得多。

这是我目前在 knex 中的内容。

let id = req.params.id;

knex('reviews')
//Can you wrap a ROUND around the average?  Or do a Round at all? 
.avg('Q1 as Q1')
.where('id', '=', id)

非常感谢!

您可以在 select 中使用 raw。在这种情况下:

knex('reviews')
  .select(knex.raw('ROUND(AVG(Q1),2) AS Q1'))

查看文档 here 以获取处理原始语句时的更多示例和良好做法。