如何使用mysql异步处理nodejs?

如何使用mysql异步处理nodejs?,mysql,node.js,Mysql,Node.js,社区 我是nodejs的新手,现在我有一个无法解决的问题:javascript/nodejs中的异步。如何处理以下内容,以便将用户名推送到数组中 我已经试着在许多不同的功能上帮助自己,但没有什么对我有效…:/ 真诚地感谢你 function getCurrentBetInformations () { connection.query('SELECT * FROM `BETS` WHERE BET_ACTIVE = "1" LIMIT 1', function(err, rowss, field

社区

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

我已经试着在许多不同的功能上帮助自己,但没有什么对我有效…:/

真诚地感谢你

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);
        }
    }); 
}); 
函数getCurrentBetInformation(){ connection.query('SELECT*FROM`BETS`WHERE BETS\u ACTIVE=“1”LIMIT 1',函数(err、rowss、fields){ if(err)logger.warn('MySQL错误:'+err.stack); betid=rowss[0]。BET_ID; betends=rowss[0]。BET_END; connection.query('SELECT*FROM'BETS\u BID',其中BID\u BET\u ID=\''+betid+'\'',函数(err,betbids,字段){ if(err)logger.warn('MySQL错误:'+err.stack); var betQuants=新数组(); var betIds=新数组(); var betUsernames=新数组(); var betDates=新数组(); var rowsAffected=betbids.length; 对于(i=0;i
}我认为你的问题来自这一部分:

if(betUsernames.length === i) {
     execSiteRef();
}
您应该先检查betUsernames数组是否为最终大小:

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

可能还有更多的错误,但我没有仔细检查。

我认为您的问题来自这一部分:

if(betUsernames.length === i) {
     execSiteRef();
}
您应该先检查betUsernames数组是否为最终大小:

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

可能还有更多的错误,我没有仔细检查。

它没有改变任何东西:/It没有改变任何东西:/It得到的输出是什么?有错误吗?你得到了什么输出?有错误吗?