如何在 Knex 查询中执行 MySQL 函数?

How to execute a MySQL function in a Knex query?

我的 table 中有一个 BINARY 字段,我通常这样抓取它:

SELECT HEX(users.id) AS id FROM users WHERE username = ?

我最近开始使用 Knex,因为我需要能够从对象动态生成 WHERE 子句。这是我的尝试:

knex('users').select('HEX(users.id) AS id)').where(filter);

这是它生成的查询:

select `HEX(users`.`id)` as `id` ....

然后我尝试了这个:

knex('users').select('HEX(`users`.`id`) AS id').where(filter);

结果是这样的:

select `HEX(``users```.```id``)` as `id` ....

如何执行 HEX() 而不会被误认为是列名?

我找到了解决办法。我必须使用 raw() 函数。所以我的查询生成器将如下所示:

knex('users').select(knex.raw('HEX(`users`.`id`) AS id')).where(filter);

使用 knex 来引用标识符,它看起来像这样:

knex('users').select(knex.raw('HEX(??) AS id', ['users.id'])).where(filter);