【发布时间】:2016-10-05 11:31:44
【问题描述】:
我有一个用户需要能够搜索的项目数据库。他们可以应用不同的过滤器,例如category、searchTerm、itemType。
我知道如何在 knex 查询中应用这些过滤器,但不确定如何有条件地组合它们。例如。在一种情况下,用户只输入 searchTerm。所以我不想按类别或项目类型过滤,而只想按 searchTerm。但是,我只想有一个 knex 函数,它有条件地向查询中添加额外的子句。
类似:
const getFilteredItems = (searchCriteria) => knex('items')
// IF (searchCriteria.searchTerm)
.where('items.itemName', 'like', `%${searchCriteria.searchTerm}%`)
// IF (searchCriteria.itemType)
.where('items.itemType', '=', searchCriteria.itemType)
// IF (searchCriteria.category)
.where('items.category', '=', searchCriteria.category)
但我不确定如何有条件地将额外的 where 子句附加到 knex 查询中。有没有一种无需编写原始 SQL 的优雅方法?
【问题讨论】:
标签: javascript sql node.js knex.js