繁体   English   中英

如何使用MySQL处理Node.js异步?

[英]How to handle nodejs async with mysql?

社区,

我是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);
        }
    }); 
}); 

}

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

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

您应该而不是检查betUsernames数组的大小是否为最终大小:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM