我正在运行两个数据库查询,以检索将在消息嵌入中输出的数据。当我将整个结果转储到控制台时,查询将返回正确的行。但是,每当我尝试输出其中一行的实际值时,它都会在消息嵌入中显示为未定义。
根据我在示例中发现的信息,rows [0] .somevalue应该输出正确的结果。
let mentionedUser = message.mentions.members.first();
let captainUser = client.users.find(user => user.id == `${mentionedUser.id}`);
con.query(`SELECT * FROM captains WHERE id = '${mentionedUser.id}';SELECT * FROM results WHERE captain = '${captainUser.username}'`, [2, 1], (err, rows) => {
if(err) throw err;
console.log(rows);
const infoEmbed = new Discord.RichEmbed()
.setColor("#1b56af")
.setAuthor('Captain Information', client.user.displayAvatarURL)
.setThumbnail('https://i.imgur.com/t3WuKqf.jpg')
.addField('Captain Name', `${mentionedUser}`, true)
.addField('Cap Space', `${rows[0].credits}`, true) // Returns undefined
message.channel.send(infoEmbed);
});
这是控制台结果
[ [ RowDataPacket {
id: '91580646270439424',
team_name: 'Resistance',
credits: 85,
roster_size: 2 } ],
[ RowDataPacket { id: 'Sniper0270', captain: 'BTW8892', credits: 10 },
RowDataPacket { id: 'Annex Chrispy', captain: 'BTW8892', credits: 5 } ] ]
在上面发布的代码中,行[0] .credits的预期输出应该输出85。不存在错误代码,它仅在消息嵌入中显示为“ undefined”。
答案 0 :(得分:1)
您正在单个查询调用中执行两个查询。在这种情况下,mysql库似乎返回一个数组数组,其中第一个值是第一个查询的结果,第二个值是第二个查询的结果。这是非标准的。通常,您可以在自己的查询调用中执行每个查询,也可以使用联合将两个查询合并到一个结果集中。
答案 1 :(得分:0)
这不是发送查询请求的实用方法,因为查询是单个语句(不包括批量更新),因此无法使用单个con.query执行两个不同的查询,这不是正确的方法。分别执行