如何使用mysql异步处理nodejs?
社区 我是nodejs的新手,现在我有一个无法解决的问题:javascript/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
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得到的输出是什么?有错误吗?你得到了什么输出?有错误吗?