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

时间:2017-06-21 15:06:22

标签: mysql node.js knex.js

我的桌子上有一个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()

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。我必须使用raw()函数。所以我的查询构建器将如下所示:

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

答案 1 :(得分:1)

让knex让我们引用标识符,它看起来像这样:

for root, dir, files in os.walk("Path of a directory"):
    for file in files:
        print(os.path.getmtime(os.path.abspath(file)))