2017-10-14 3 views
0

Dans mon module Node.js, j'ai quelques données dans un tableau que je besoin de construire une requête:façon plus intelligente de construire requête

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 
    ... 
} 

A la fin des codes ci-dessus, si j'ai 2 comptes , je whereClause:

'OU (FieldA = 'ABCDE' ET FieldB = '0003') OR (FieldA = 'ABCDE' ET FieldB = '0002') OU

Je dois toujours supprimer le dernier ' Orbite.

Existe-t-il une façon plus intelligente de construire ce qui précède?

Répondre

2

Puisque la valeur de FieldA semble être fix dans la boucle, vous pouvez écrire cette requête

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

Puisque vous n'avez pas préparé l'instruction SQL, vous pouvez utiliser le tableau directement, vous devez joindre les valeurs similaire à votre approche.

Si la valeur est garantie à moins d'une valeur, je concatène dans la boucle toujours avec la virgule et utilise substr (1) de la valeur