私が取り組んでいる関数は、7 つの異なるキー値を持つ入力オブジェクトを取得することであり、それぞれが未定義であるかどうかにかかわらず可能性があります。入力に存在するキー値に基づいてデータベースをフィルタリングしたいと考えています。たとえば、input.userID
存在する場合のみ、次のクエリを実行します。
db.query("...WHERE userID = ${userID}", {userID: input.userID});
それ以外の場合、input.userID と input.startTime の両方が存在する場合は、次のようにします。
db.query("...WHERE userID = ${userID} and startTime= ${startTime}", {userID: input.userID, startTime: input.startTime});
私が行ったことは、次のような params と keys オブジェクトを作成したことです。
if(input.userID) {
keys.push('userID');
params.push(input.userID);
query = addFilterToTheQuery(query, 'userID', input.userID, filteredItemsCount);
filteredItemsCount = filteredItemsCount +1;
}
addFilterToTheQuery
私が自分で実装した単純な機能です。私は基本的にifケースを7つ作ります。次に、これらのキーとパラメーター値を使用して、別の巨大なスイッチ ケース コードが必要になる可能性がある方法でクエリ関数に渡す必要があります。
これがこれを行う唯一の方法ですか?このコードの冗長性を取り除くより良い方法はありますか?