Mysql Steam trade bot-TypeError:无法读取未定义的属性“0”
所以,我现在处境艰难。我目前正在尝试我的蒸汽机器人运气,但我遇到了一个问题,我似乎无法解决自己 首先,我想说,当我使用托管在其他地方的数据库时,这是可行的,但是当我使用运行在localhost上的MySQL服务器时,这个问题就出现了 问题如下:Mysql Steam trade bot-TypeError:无法读取未定义的属性“0”,mysql,sql,node.js,Mysql,Sql,Node.js,所以,我现在处境艰难。我目前正在尝试我的蒸汽机器人运气,但我遇到了一个问题,我似乎无法解决自己 首先,我想说,当我使用托管在其他地方的数据库时,这是可行的,但是当我使用运行在localhost上的MySQL服务器时,这个问题就出现了 问题如下: /home/bot1/node_modules/mysql/lib/protocol/Parser.js:82 throw err; ^ TypeError: Cannot read property '0' of undefined at Query.
/home/bot1/node_modules/mysql/lib/protocol/Parser.js:82 throw err; ^ TypeError: Cannot read property '0' of undefined at Query._callback (/home/bot1/bot1.js:711:143) at Query.Sequence.end (/home/bot1/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24) at Query.ErrorPacket (/home/bot1/node_modules/mysql/lib/protocol/sequences/Query.js:94:8) at Protocol._parsePacket (/home/bot1/node_modules/mysql/lib/protocol/Protocol.js:271:23) at Parser.write (/home/bot1/node_modules/mysql/lib/protocol/Parser.js:77:12) at Protocol.write (/home/bot1/node_modules/mysql/lib/protocol/Protocol.js:39:16) at Socket. (/home/bot1/node_modules/mysql/lib/Connection.js:96:28) at Socket.emit (events.js:107:17) at readableAddChunk (_stream_readable.js:163:16) at Socket.Readable.push (_stream_readable.js:126:10)
查询回调导致的问题是:
someVar = rows[0].playersCount;
本部分的完整代码为:
mysqlConnection.query('SELECT COUNT(DISTINCT userid) AS playersCount FROM game' + current_game, function(err, rows){
someVar = rows[0].playersCount;
console.log('Current Players: ' +someVar);
if(someVar == 2 && items.length > 0 && endtimer==-1) {
console.log('Found 2 Players');
endtimer = setTimeout(EndGame,GameTime*1000);
mysqlConnection.query('UPDATEgamesSETstarttime=UNIX_TIMESTAMP() WHEREid` = \'' + current_game + '\'', function(err, row, fields) {});
}
});
在本例中,当我从game2运行查询selectcountdistinct userid asplayerscount时,它返回playersCount 1
我很难找出问题的原因,非常感谢您的帮助。行无法读取未定义的属性“0”,这意味着您正在尝试访问未定义变量的属性“0”。从代码中可以看出,未定义的变量是rows,这意味着您的查询可能存在一些问题。因为没有检查回调中的err变量,所以无法判断
这种回调方法的良好实践是首先通过检查是否定义了err来验证它是否运行良好。这将使您能够更好地了解出错的原因,也使您的代码能够更好地处理错误:
mysqlConnection.query('SELECT COUNT(DISTINCT userid) AS playersCount FROM game' + current_game, function(err, rows){
if (err) {
// first check if there's an error and mitigate it
...
...
return;
}
// if we got here, there's no error, so we know rows is defined and can get to work
someVar = rows[0].playersCount;
console.log('Current Players: ' +someVar);
if(someVar == 2 && items.length > 0 && endtimer==-1) {
console.log('Found 2 Players');
endtimer = setTimeout(EndGame,GameTime*1000);
mysqlConnection.query('UPDATEgamesSETstarttime=UNIX_TIMESTAMP() WHEREid` = \'' + current_game + '\'', function(err, row, fields) {});
}
});
我需要对您的代码做任何更改吗?因为当我粘贴它时,我得到了另一个无法读取的错误。好吧,你需要处理这个错误。。。把你的错误处理,而不是我的。。。