KnexJS原始查询无法按预期工作

时间:2018-03-23 03:32:51

标签: javascript mysql node.js knex.js

我的查询如下:

SET @count = 0; UPDATE table SET table.id = @count:= @count + 1 WHERE table.name = "name";

如果我通过控制台执行它,或者像Jetbrains Datagrip那样执行它,它可以很好地工作,但当我通过Knex作为原始查询推送它时,它会响应一个mysql ER_PARSE_ERROR。

我做了一些测试,看起来Knex不明白@count是什么。

有什么想法吗?如果可以使用Knex方法对其进行格式化,我真的很感激提示

1 个答案:

答案 0 :(得分:0)

我想您可以使用事务承诺来增加count,将其写为Knex.js查询:

var count = 0;
knex.transaction(function(trx){
    knex('table')
        .where('name', '=', 'name')
        .update(({
            id: count
        });
})
.then(()=>++count);