我正在处理的功能是获取一个具有 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});
我所做的是我创建了一个这样的参数和键对象:
if(input.userID) {
keys.push('userID');
params.push(input.userID);
query = addFilterToTheQuery(query, 'userID', input.userID, filteredItemsCount);
filteredItemsCount = filteredItemsCount +1;
}
addFilterToTheQuery
是我自己实现的一个简单功能。我基本上做了 7 个 if 案例。然后我必须使用这些键和参数值以可能需要另一个巨大的 switch case 代码的方式传递给查询函数。
这是唯一的方法吗?有没有更好的方法来摆脱这段代码中的冗余?