2015-07-19 78 views
1

社区,如何使用mysql处理nodejs异步?

我是新的在nodejs,现在我有一个问题,我不能解决:在javascript/nodejs异步。我如何处理以下内容,以便将用户名推送到数组中?

我已经试图帮助自己与许多不同的功能,但没有什么工作对我来说...:/

真诚Adhskid。

function getCurrentBetInformations() { 
connection.query('SELECT * FROM `BETS` WHERE BET_ACTIVE = "1" LIMIT 1', function(err, rowss, fields) { 

    if (err) logger.warn('MySQL Error: ' + err.stack); 

    betid = rowss[0].BET_ID; 
    betends = rowss[0].BET_END; 
    connection.query('SELECT * FROM `BETS_BID` WHERE BID_BET_ID=\'' + betid + '\'', function(err, betbids, fields) { 

     if (err) logger.warn('MySQL Error: ' + err.stack); 

     var betQuants  = new Array(); 
     var betIds   = new Array(); 
     var betUsernames = new Array(); 
     var betDates  = new Array(); 
     var rowsAffected = betbids.length; 

     for(i=0; i < rowsAffected; i++) { 
      betQuants.push(betbids[i].BID_KEYS_COUNT); 
      betIds.push(betbids[i].BID_ID); 
      var betSender = betbids[i].BID_SENDER; 
      connection.query('SELECT `USER_NAME` FROM `USER` WHERE `USER_STEAMID` = \'' + betSender + '\' LIMIT 1', function(err, rows, fields) { 
       if (err) logger.warn('MySQL Error: ' + err.stack); 

       console.log(rows[0].USER_NAME); 
       addUsername(rows[0].USER_NAME); 
      }); 
      function addUsername (currentUsername) { 
       betUsernames.push(currentUsername); 
      } 
      betDates.push(betbids[i].BID_TIME); 
      if(betUsernames.length === i) { 
       execSiteRef(); 
      } 
     } 
     function execSiteRef() { 
      console.log(betUsernames); 
      sendUserSiteRefresh([betQuants, betIds, betUsernames, betDates], betends); 
     } 
    }); 
}); 

}

+0

你得到的输出是什么?有什么错误? – luksch

回答

0

我认为你的问题来源于此部分:

if(betUsernames.length === i) { 
    execSiteRef(); 
} 

你应该iinstead检查betUsernames阵列是最终的大小:

if(betUsernames.length === rowsAffected) { 
    execSiteRef(); 
} 

也许但有更多的错误,我没有仔细检查。

+0

它没有改变任何东西:/ – Adhskid