在Knex查询中使用运算符'like`或'greater than'和对象语法

时间:2016-07-03 11:29:50

标签: bookshelf.js knex.js

我正在使用JSON对象来构建这样的Knex查询:

{where: {id: '5'}

如何对likegreater than等运算符使用相同的查询格式(对象语法)?

2 个答案:

答案 0 :(得分:2)

您可以使用 where / andWhere 。以下代码显示的更新仅在 user_id = userId book_reference = bookName 结果< RES 即可。

knex('user_books')
    .where({
      user_id: userId,
      book_reference: bookName
    })
    .andWhere('result', '<', res)
    .update({
      'updated_at': bookshelf.knex.raw('CURRENT_TIMESTAMP'),
      'text_done': true,
    })

答案 1 :(得分:1)

我认为不可能。看the relevant source code of the query builder,看起来像是:

_objectWhere(obj) {
  const boolVal = this._bool();
  const notVal = this._not() ? 'Not' : '';
  for (const key in obj) {
    this[boolVal + 'Where' + notVal](key, obj[key]);
  }
  return this;
}

基本上只使用两个参数调用适当的Where函数(因此没有运算符,这意味着=