KnexJS给出了不同的回应

时间:2017-07-21 03:54:07

标签: node.js postgresql knex.js

所以我在PostgreSQL数据库上设置了NodeJS + KnexJS,并使用.whereRaw()方法,因此我可以在CASE子句中使用WHERE语句。

在迁移到代码之前,我在CLI中测试了该查询。这是正在使用的代码。

var qry = knex.select(....);  // ignore the select, not important.
qry.with('daspecs', function(qy) {
   qy.select('spec_id').from('drawings').where('uid', query.d);
}).whereRaw('CASE WHEN (select "spec_id" from "daspecs") IS NULL THEN true ELSE c.spec_id = (select "spec_id" from "daspecs") END');

KnexJS生成的SQL(使用qry.toString()输出)是正确的,我甚至可以将其复制并粘贴到我的 psql CLI中,并返回我想要的结果(12条记录) ),但由于一些奇怪的原因,KnexJS查询似乎返回一组完全不同的结果(1106条记录)。

不知道下一步该去哪里,因为KnexJS给了我正确的SQL,但似乎它正在执行其他的东西,并且不确定如何诊断它实际上在做什么(我已经尝试过了) knex.on('query'...)事件。

对最终SQL的任何更改都会导致错误(我已经过测试),因此排除了丢失的部分。

有没有人对KnexJS有任何经验或问题说过一件事,但特别是用whereRaw命令做另一件事?

0 个答案:

没有答案