Несколько запросов MySQL, возвращающих неопределенное значение при выводе значения - PullRequest
0 голосов
/ 08 июня 2019

Я выполняю два запроса к базе данных, чтобы получить данные, которые я буду выводить при вставке сообщения.Запросы возвращают правильные строки, когда я просто вывожу весь результат в консоль.Однако всякий раз, когда я пытаюсь вывести фактическое значение для одной из строк, оно отображается как неопределенное во встраивании сообщения.

Из того, что я нашел на основании примеров, строки [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. Коды ошибок отсутствуют, этопросто отображается как "неопределенный" в сообщении.

Ответы [ 2 ]

1 голос
/ 08 июня 2019

Вы выполняете два запроса в одном вызове запроса. Похоже, что библиотека mysql возвращает массив массивов в этом сценарии, где первое значение является результатом первого запроса, а второе - результатом второго запроса. Это нестандартно. Обычно вы выполняете каждый запрос в отдельном вызове или используете объединение для объединения двух запросов в один набор результатов.

0 голосов
/ 09 июня 2019

это не практичный способ отправки запроса, так как запрос - это один оператор, исключающий массовое обновление, вы не можете выполнить два разных запроса, используя один con.query, это неправильный способ.выполнить их отдельно

...