编程语言
首页 > 编程语言> > JavaScript-编译SELECT查询时检测到KNEX未定义绑定

JavaScript-编译SELECT查询时检测到KNEX未定义绑定

作者:互联网

var knex = require('knex')(config);
var bookshelf = require('bookshelf')(knex);
var SKU = bookshelf.Model.extend({
    tableName: 'skus',

});
SKU.where('id', undefined).fetch().then(function (skus) {
    if (skus) console.log(skus.toJSON());
}).catch(function (err) {
    console.error(err);
});

它抛出

Undefined binding(s) detected when compiling SELECT query.

0.11.5可以正常工作,而0.11.6以后可以停止工作.我现在指的是0.13.0.

useNullAsDefault: true

可以很好地用于插入查询,但不能用于选择查询.我应该传递任何标志来解决此错误吗?

解决方法:

.where(‘id’,undefined)在SQL中没有任何意义.您不能查询不存在的内容.

也许您想查询id为NULL的地方?使用knex可以这样完成:.whereNull(‘id’)

对于早期的knex版本,它将被忽略,但是从0.12.x开始.

因此,要具有与较新的功能(实际上也与较旧的<0.12版本兼容)的knex版本,您应该执行以下操作:

SKU.fetch().then(function (skus) {
    if (skus) console.log(skus.toJSON());
}).catch(function (err) {
    console.error(err);
});

除非书架在那里增加了额外的魔力…

useNullAsDefault:true选项仅用于在一个插入中插入多行时.除非使用sqlite,否则使用它是没有意义的(请检查最后一个示例http://knexjs.org/#Builder-insert).

标签:knex-js,bookshelf-js,node-js,javascript
来源: https://codeday.me/bug/20191111/2018053.html