在具有对象语法的 Knex 查询中使用运算符"like"或 'greater than'



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

{where: {id: '5'}

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

可以使用where/andWhere。下面的代码显示了只有当user_id = userIdbook_reference = bookName并且result

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

我认为这不可能。查看查询构建器的相关源代码,如下所示:

_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函数,只有两个参数(因此没有操作符,这意味着=)