javascript - 控制台中未定义结果

标签 javascript node.js steambot

运行 node.js 时,我使用此 Syntax 得到了 current_game 的“deposited over undefined”结果:

if(offer.items_to_receive == undefined) return;             
mysqlConnection.query('SELECT `value` FROM `info` WHERE `name`=\'maxitems\'', 
function(err, row, fields) {

    if(offer.items_to_receive.length > row[0].value) {
        offers.declineOffer({tradeOfferId: offer.tradeofferid});
        offer.items_to_receive = [];
        var unixtime = Math.round(new Date().getTime()/1000.0);
        mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`, `win`, `system`, `time`) VALUES (\''+offer.steamid_other+'\',\'Sorry, but you deposited too many items\',\'System\', \'0\', \'1\', \''+unixtime+'\')', function(err, row, fields) {});
        return;
    } else {
        mysqlConnection.query('SELECT `value` FROM `info` WHERE         `name`=\'current_game\'', 
        function(err, row, fields) {  
            var current_game = (row[0].value);
            mysqlConnection.query('SELECT COUNT(item) FROM `game' + current_game + '` AS maxitemperperson WHERE `userid`=\''+offer.steamid_other+'\'' , function(err, row) {  
                someVari = row[0].maxitemperperson;
                console.log('Deposited over ' +someVari);
                if((someVari + offer.items_to_receive.length) > 10) {
                    offers.declineOffer({tradeOfferId: offer.tradeofferid});                        
                    mysqlConnection.query('INSERT INTO `messages` (`userid`,`msg`,`from`, `win`, `system`, `time`) VALUES (\''+offer.steamid_other+'\',\'Sorry, but you deposited too many items\',\'System\', \'0\', \'1\', \''+unixtime+'\')', function(err, rowl, fields) {});
                    return;
                }
            })
        })
    }
});

合成错误在哪里?基本上,第一部分直到“else”正在工作,但之后我尝试计算某个表(通过 current_game 变量动态生成)中具有相同用户 ID 的项目数,然后添加另一个项目数,然后与 10 进行比较(也可以写为 row[0].value。

如有任何帮助,我们将不胜感激。

最佳答案

您的 SQL 语句中的 AS 别名位于错误的位置:

'SELECT COUNT(item) FROM `game' + current_game + '` AS maxitemperperson WHERE `userid`=\''+offer.steamid_other+'\''

这将为表名称添加别名,因此您可以执行 COUNT(maxitemperperson.item) 来引用它(如果查询中有多个表,这很有用)。

你想要的是这样的:

'SELECT COUNT(item) AS maxitemperperson FROM `game' + current_game + '` WHERE `userid`=\''+offer.steamid_other+'\''

关于javascript - 控制台中未定义结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33623685/

相关文章:

javascript - javascript 数组对象逻辑中的小问题

node.js - 将变量从 Node.js 服务器传递到客户端

javascript - Nodejs Steam 交易报价管理器不进行轮询

node.js - Steam NodeJS 仅接受具有 X 个 appID 项目的交易

javascript - 使用 Angular 读取 JSON

javascript - XMLHttpRequest 没有将 POST 数据发送到 Django 服务器

Ruby on Rails 还是 Node.js?哪个更适合电子商务网站?

steam - steam社区市场中的item_type

HTML 中的 JavaScript 不执行

javascript - JS - 它是什么类型的对象以及如何访问它