多个MySQL查询在输出值时返回未定义

时间:2019-06-08 19:10:06

标签: sql node.js discord discord.js

我正在运行两个数据库查询,以检索将在消息嵌入中输出的数据。当我将整个结果转储到控制台时,查询将返回正确的行。但是,每当我尝试输出其中一行的实际值时,它都会在消息嵌入中显示为未定义。

根据我在示例中发现的信息,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”。

2 个答案:

答案 0 :(得分:1)

您正在单个查询调用中执行两个查询。在这种情况下,mysql库似乎返回一个数组数组,其中第一个值是第一个查询的结果,第二个值是第二个查询的结果。这是非标准的。通常,您可以在自己的查询调用中执行每个查询,也可以使用联合将两个查询合并到一个结果集中。

答案 1 :(得分:0)

这不是发送查询请求的实用方法,因为查询是单个语句(不包括批量更新),因此无法使用单个con.query执行两个不同的查询,这不是正确的方法。分别执行