Knex.JS - 如何将小写输入与小写字段值进行比较?

Knex.JS - How does one compare a lowercased input against lowercased field values?

所以,我正在为我的数据库使用 Knex.JS。我想将小写输入与小写字段值进行比较。我以为我可以 knex.raw 它,但显然我的脚本在我尝试时中断了。有没有人成功地与 Knex.JS 中的小写值进行了 LIKE 比较?如果你做到了,你是怎么做到的?

任何帮助一如既往,非常感谢。

function findUsers(q) {
  return db("users")
    .where(
      knex.raw(`'LOWER("firstname")', "like", %${q.toLowerCase()}%`, "knex")
    )
    .orWhere("lastname", "like", `%${q}%`)
    .orWhere("username", "like", `%${q}%`)
    .orWhere("email", "like", `%${q}%`);
}

您可以将值包装在 lower() 中,例如:

function findUsers(q) {
  return db('users')
    .where(knex.raw('lower("firstname")'), 'like', `%${q.toLowerCase()}%`)
    .orWhere(knex.raw('lower("lastname")'), 'like', `%${q}%`)
    .orWhere(knex.raw('lower("username")'), 'like', `%${q}%`)
    .orWhere(knex.raw('lower("email")'), 'like', `%${q}%`);
}

参见this Github issue