在node.js模块中,数组中有一些数据需要构造查询:
var valueClause = "(fieldA = '" + data.fieldA + "' AND fieldB = '";
var whereClause = ' WHERE ';
var hasAdded = false;
data.accounts.forEach(function (account) {
whereClause += valueClause + account.fieldB + "') OR ";
hasAdded = true;
})
if (hasAdded) {
// remove OR
whereClause = whereClause.substring(0, whereClause.length - 3);
// use the whereClause in the query
...
}
在上述代码的末尾,如果我有两个账户,我有where条款:
'其中(fielda='abcde'和fieldb='0003')或(fielda='abcde'和fieldb='0002')或
我总是要去掉最后一个“或”位。
有没有一种更聪明的方法来构建上述内容?
最佳答案
因为fieldA的值在循环中似乎是固定的,所以可以编写这个查询
WHERE fieldA = 'abcde' AND fieldB IN ('0002','0003')
由于没有准备好的sql语句(可以直接使用数组),因此必须像yout方法那样连接这些值。
如果保证至少有一个值存在,我在循环中总是用前导逗号连接,并使用值的0(1)。