Knex中的Dynamyc查询

时间:2018-11-25 14:05:01

标签: mysql node.js knex.js

我正在尝试实现可以​​动态地将查询字符串或构建器作为参数的联合。请参见下面的代码:

function dynamicUnion(queryString||builder){
baseQuery.union(function () {
//I want to use query string or querybuilder  here instead.
     this.select('*').from('users').whereNull('first_name');
        })
     }

在行:this.select('*').from('users').whereNull('first_name')的地方,我想实现类似:this.raw(queryString||builder)或任何可行的替代方法,尽管在使用{时没有遇到.raw()方法该块中的{1}}关键字。

我之所以这样实现,是因为this中要使用的select查询会有所不同,并且如果动态传递,效率很高。

1 个答案:

答案 0 :(得分:1)

听起来像knex中的错误,this.raw在这种情况下不起作用。这是将原始查询传递给联合的一种方法:

const Knex = require('knex');


const knex = Knex({
  client: 'mysql',
});

knex('foo').union(knex.raw('foo bar')).toSQL();

// outputs "select * from `foo` union foo bar"

https://runkit.com/embed/10boda0lt1it