2015-07-19 80 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