2014-08-28 3 views
1

Я кодирую регистрационную форму пользователя. В node-js node mysql plugin, мне нужно написать вложенные коды, как это?Node.js Несколько запросов Mysql

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

       }); 
      } 

     }); 
    } 

}); 

Для написания вложенных кодов действительно скучно. Есть ли способ сделать это несколько запросов?

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

ответ

0

Обычное решение такого рода проблемы заключается в использовании утилиты модуля, как async. Для вашей конкретной ситуации вы можете использовать что-то вроде async.waterfall.

+0

Я не спрашивал проблему асинхронности ... Я просто попросил написать вложенный код, необходимый, как первый блок – ozer

+1

И я ответил, что вы не * имеете *, чтобы писать вложенный код, подобный этому, и что 'async' является одной альтернативой для написания вложенной анонимной функции. – mscdex

+0

Спасибо. Ну, есть ли другой способ? – ozer

Смежные вопросы