Javascript Bookshelf.JS |如何在查询中使用where和orWhere
BookshelfFJS有以下使用“查询”的示例:Javascript Bookshelf.JS |如何在查询中使用where和orWhere,javascript,bookshelf.js,Javascript,Bookshelf.js,BookshelfFJS有以下使用“查询”的示例: model .query({where: {other_id: '5'}, orWhere: {key: 'value'}}) .fetch() .then(function(model) { ... }); 是否可以执行以下操作: var whereObj = { 'key1':'value1', 'key2':'value2' }; model .query({where: whereObj, orW
model
.query({where: {other_id: '5'}, orWhere: {key: 'value'}})
.fetch()
.then(function(model) {
...
});
是否可以执行以下操作:
var whereObj = {
'key1':'value1',
'key2':'value2'
};
model
.query({where: whereObj, orWhere: {key: 'value'}})
.fetch()
.then(function(model) {
...
});
您有两个选择:
使用回调
.query(function (qb) {
qb.where(other_id, '5')
.orWhere('key', 'value');
});
使用对象
.query({
where: { other_id: '5' },
orWhere: { key: 'value' }
})
对于更复杂的查询,可以使用以下方法:
.query(function(qb) {
qb.select('*');
qb.where(function () {
this.where('attr1', 1);
this.where('attr2','in' , [1,2,3]);
});
qb.orWhere(function () {
this.where('attr1', 2);
this.where('attr2','in' , [4,5,6]);
});
})
查看扩展,它直接在书架模型上公开了许多Knex.js函数。您的代码将简化为以下内容:
let result = await Model.where({other_id: 5}).orWhere('key', 'value').fetch();
那么从.orWhere()开始,而不是从.where()开始?听起来并不直观(感觉应该是另一种方式。哦,对不起。这是回调示例中的一个错误-从
where
开始,或者如果它是第一个*where
语句,则where
默认为where
。非常好的扩展。谢谢!