更智能的构造查询方式

时间:2017-10-14 07:43:24

标签: sql node.js algorithm

在我的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
    ...
}

在上述代码的最后,如果我有2个帐户,我有whereClause:

&#39; WHERE(fieldA =&#39; abcde&#39; AND fieldB =&#39; 0003&#39;)或(fieldA =&#39; abcde&#39; AND fieldB =&#39; 0002&#39;)或< / p>

我总是要删除最后一个&#39; OR&#39;位。

有没有更明智的方法来构建上述内容?

1 个答案:

答案 0 :(得分:2)

由于fieldA的值似乎已在循环中修复,因此您可以编写此查询

ip.getId()

由于您没有准备好的SQL语句,您可以直接使用数组,您必须加入类似于您的方法的值。

如果保证至少存在一个值,我在循环中连接始终使用前导逗号并使用值的substr(1)