Mysql Steam trade bot-TypeError:无法读取未定义的属性“0”

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.

所以,我现在处境艰难。我目前正在尝试我的蒸汽机器人运气,但我遇到了一个问题,我似乎无法解决自己

首先,我想说,当我使用托管在其他地方的数据库时,这是可行的,但是当我使用运行在localhost上的MySQL服务器时,这个问题就出现了

问题如下:

/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) {});
    }
});

我需要对您的代码做任何更改吗?因为当我粘贴它时,我得到了另一个无法读取的错误。好吧,你需要处理这个错误。。。把你的错误处理,而不是我的。。。