在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)。

10-08 12:46