我正在处理的函数获取具有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)。 –