我正在處理的函數獲取具有7個不同鍵值的輸入對象,並且它們中的每一個都可能是未定義的。我想根據輸入中存在的鍵值過濾數據庫。例如,如果只存在input.userID
我想運行此查詢:pg-promise爲選擇查詢創建自定義過濾器
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和鍵對象是這樣的:
if(input.userID) {
keys.push('userID');
params.push(input.userID);
query = addFilterToTheQuery(query, 'userID', input.userID, filteredItemsCount);
filteredItemsCount = filteredItemsCount +1;
}
addFilterToTheQuery
是一個簡單的功能,我實現了自己。如果情況基本上是7。然後,我必須使用這些鍵和參數值以可能需要另一個巨大的開關盒代碼的方式傳遞給查詢函數。
這是唯一的方法來做到這一點?有沒有更好的方法來擺脫這段代碼中的冗餘?
1.語法like'%value%'只能用於'LIKE' 2.您不能將'params [1]'作爲第三個參數傳遞給'query' - [在API中查看]( http://vitaly-t.github.io/pg-promise/Database.html#.query)。 –