2014-08-28 1 views
1

Je suis en train de coder un formulaire de registre d'utilisateur. Dans le nœud-js node mysql plugin, dois-je écrire des codes imbriqués comme celui-ci?Node.js Requêtes Mysql multiples

var query1 = connection.query('SELECT * FROM table1 WHERE var1 = ?', [var1], function(err, results1) { 

    if(results1[0]) { 
     var query2 = connection.query('SELECT * FROM table2 WHERE var2 = ?', [var2], function(err, results2) { 

      if(results2[0]) { 
       var query3 = connection.query('SELECT * FROM table2 WHERE var3 = ?', [var3], function(err, results3) { 

        if(results3[3]) { 
         // do it. 
        } 

       }); 
      } 

     }); 
    } 

}); 

Écrire des codes imbriqués est vraiment ennuyeux. Existe-t-il un moyen de faire plusieurs requêtes?

var query1 = connection.query('SELECT * FROM table1 WHERE var1 = ?', [var1], function(err, results1) { }); 
var query2 = connection.query('SELECT * FROM table1 WHERE var2 = ?', [var2], function(err, results2) { }); 
var query3 = connection.query('SELECT * FROM table1 WHERE var3 = ?', [var3], function(err, results3) { }); 

if(results1[0]) { 

} else if(results2[0]) { 

} else if(results3[0]) { 

} else { 
    // do it. 
} 

Répondre

0

Une solution commune à ce genre de problèmes est d'utiliser un module utilitaire comme async. Pour votre situation particulière, vous pouvez utiliser quelque chose comme async.waterfall.

+0

Je n'ai pas demandé de problème asynchrone ... Je viens de demander est d'écrire le code imbriqué nécessaire comme le premier bloc – ozer

+1

Et ma réponse était que vous n'avez * pas * d'écrire le code imbriqué comme ça et que "async" est une alternative à l'écriture de fonction anonyme imbriquée. – mscdex

+0

Merci. Eh bien, y a-t-il un autre moyen? – ozer