我使用node-mariasql从mysql获取一行到一个数组。 当我使用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”的值,我会将其作为回报: 76561198053558238 但是,如果我打印出“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 :(得分:1)
您的回调会收到Array
个结果行。由于未知原因,Array
有一个属性steamid
。
尝试
getUser('76561198053558238', function(users) {
logger.debug(users);
logger.debug(users[0].steamid);
logger.debug(users[0].autoSendWinnings);
});