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