【问题标题】:Knex.js Select Average and RoundKnex.js 选择平均和四舍五入
【发布时间】:2018-06-25 16:15:16
【问题描述】:

我正在将应用程序从 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)

非常感谢!

【问题讨论】:

    标签: mysql express knex.js bookshelf.js


    【解决方案1】:

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

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

    查看文档here,了解更多处理原始语句的示例和良好做法。

    【讨论】:

    • 您好丹尼尔,感谢您的回复。这确实对我有用,但我想我想知道 knex 是否可以将舍入作为我猜的“方法”。就像 knex('reviews').round('Q1 as Q1').where('id', '=', id) 而不必使用 raw。我当前的设置是 knex.raw(sqlquery, [id]) 并且我从一个变量中输入一个 sql 查询。
    • AFAIK,knex 没有圆形方法或类似的方法。单独使用knex.raw 的问题在于它需要您解析返回的对象。上面的 sn-p 绕过了这个问题。
    • 同意解析部分,节省了大量返回信息需要整理!谢谢!
    猜你喜欢
    • 2018-12-20
    • 1970-01-01
    • 2017-11-26
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 2012-08-04
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多