2014-08-28 89 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 2014-08-28 22:09:19

+1

而我的回答是,你没有*有*编写嵌套代码,并且'async'是一个替代方案编写嵌套的匿名函数。 – mscdex 2014-08-28 22:55:51

+0

谢谢。那么,还有其他方法吗? – ozer 2014-08-28 23:16:41