私はユーザが検索する必要があるアイテムのデータベースを持っています。彼らはcategory
,searchTerm
,itemType
のような異なるフィルタを適用することができます。複数の検索条件でKnex.jsとSQLを使用する条件付きフィルタ
これらのフィルタのそれぞれをknexクエリに適用する方法はわかっていますが、条件付きでそれらを組み合わせる方法はわかりません。例えば。あるケースでは、ユーザーはsearchTermのみを入力します。だから私はカテゴリや項目の種類ではなく、searchTermでフィルタリングしたくありません。しかし、私は条件付きでクエリに余分な節を追加するknex関数を1つだけ持ちたいと思う。
ような何か:
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)
しかし、私は条件付きでknexクエリに余分なwhere
句を追加するかどうかはわかりません。生のSQLを書くことなくこれを行うエレガントな方法はありますか?
ありがとう、これは動作します:) – otajor