2017-10-14 95 views
0

以我的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:

'WHERE(FIELDA = 'ABCDE' AND fieldB = '0003')或(FIELDA = 'ABCDE' AND fieldB = '技術')或

我總是要刪除最後一個'OR'位。

有沒有更智能的方法來構建上述?

回答

2

由於FIELDA的價值似乎是在循環修復,你可以寫這個查詢

WHERE fieldA = 'abcde' AND fieldB IN ('0002','0003') 

既然你沒有準備的SQL語句,在那裏你可以直接使用數組,你必須參加的價值觀類似於你的方法。

如果保證至少有一個值存在,我將在循環中連接並始終使用前導逗號,並使用值爲

的子字符串(1)