2016-03-17 3 views
-2

Я получаю строку из mysql в массив с помощью node-mariasql. Когда я печатаю этот массив, используя мой Winston регистратор, я получаю это:Не удается получить доступ ко всем значениям массива

steamid=76561198053558238, tradePartnerId=93292510, tradeToken=T3dZTnlq, autoSendWinnings=1, profilePrivacy=0, earnings=0.00, lastKnownName=jdK jdK, avatar=https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/49/4955f3be7e9b9d16e8fc0b16ed2407ba9b4c563c.jpg, avatarLarge=https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/49/4955f3be7e9b9d16e8fc0b16ed2407ba9b4c563c_full.jpg 

Если я распечатать значение для «SteamID», я получаю это как возвращение: Однако, если я распечатать значение «autoSendWinnnings» или «profilePrivacy», я получаю «undefined» в качестве возврата. Почему? Что я делаю не так? Я не думаю, что это проблема, связанная с MySQL, потому что, если я распечатаю весь массив, я, очевидно, получу все значения.

Тем не менее, я добавлю соответствующий код здесь.

statements['get_user'] = sql.prepare('SELECT * FROM `users` WHERE steamid=:steamid'); 
function getUser(steamid, callback) { 
    sql.query(statements.get_user({ steamid: steamid }), { useArray: true }, function(err, rows) { 
     if(err) 
      logger.error('A MySQL error occured: ' + err); 

     callback(rows); 
    }); 
} 

getUser('76561198053558238' function(user) { 
    logger.debug(user); // I get the whole array here 
    logger.debug(user.steamid); // I get the value for steamid here 
    logger.debug(user.autoSendWinnings); // I get undefined here 
}); 

Спасибо заранее, я надеюсь, что кто-то может мне помочь.

+0

Я бы поставил ваш 'steamid' строка преобразуется в число в какой-то момент и так 76561198053558238 не могут быть представлены точно двойником, вы получите 76561198053558240. Хотя было бы странно, что 'logger.debug (user.steamid);' все равно будет отображать правильный идентификатор, если это так. –

+0

Также покажите нам свое определение для таблицы. –

+0

Я собираюсь выйти на конечность здесь и предположить, что autoSendWinnings имеет орфографическую ошибку, а profilePrivacy на самом деле не определена, но регистратор может понять это и напечатать ее как 0, используя определение объекта. – chugadie

ответ

1

Обратный вызов получает Array строк результатов. По неизвестным причинам Array имеет свойство steamid.

Попробуйте

getUser('76561198053558238', function(users) { 
    logger.debug(users); 
    logger.debug(users[0].steamid); 
    logger.debug(users[0].autoSendWinnings); 
}); 
+0

Да, неважно, в этом была проблема. Я думал, что пока есть только одна строка, мне не нужно указывать строку ... Спасибо :) – LuucDev

Смежные вопросы