【发布时间】:2020-11-02 21:09:58
【问题描述】:
我正在尝试在 Knex.js 中重写一些 MySQL 查询,我觉得我每次都遇到.raw,这与我一开始想使用 Knex 的原因背道而驰。
是否可以不使用.raw编写以下查询?
SELECT
product,
SUM(revenue)
FROM orders
使用raw,它可以写:
knex()
.select(
'product',
knex.raw('SUM(revenue)')
)
.from('orders')
但使用 Knex 的想法是避免使用 MySQL 查询字符串,所以我希望有另一种方法。还是每个人都只是在任何地方使用.raw,而我误解了什么?很有可能,我是新手。
【问题讨论】:
-
当您使用强制转换或 SQL 函数编写查询时,您需要经常使用
knex.raw。使用它没有什么不好,但你应该使用??标识符绑定来引用这样的列/表:knex.raw('SUM(??)', ['revenue']):) -
这种方法的优势是什么?只是更短的 sql 字符串?
-
它会根据使用的 sql 方言自动为标识符添加正确的引号。