Узел MYSQL export возвращает undefined - PullRequest
0 голосов
/ 02 мая 2020

Я создаю бот-диск, который интегрирован с mysql. Чтобы упростить задачу, я создал центральный файл для базы данных mysql (configs / mysql. js) и, когда это понадобится команде, отправит запрос запроса в этот файл и, наконец, вернет обработанное значение. Но когда я пытаюсь это сделать, возврат не определен в консоли (команды), но в консоли mysql. js он показывает правильное значение.

MYSQL. js Код

const mysql = require("mysql");
const connection = mysql.createConnection({
  host: config.URL,
  user: config.dbUser,
  password: config.dbPassword,
  database: config.database
});
  connection.connect(function(err) {
  if (err) {
    console.error("[MYSQL] Error on Connection: " + err.stack);
    return;
  }

  console.log("[MYSQL] Connected with ID " + connection.threadId + "!");
});

function query(sql) {
  connection.query(sql, function(error, result, fields) {
    if (error) return error;
    const analise = JSON.stringify(result[0]);
    console.log(analise) //it's return the value correct
    return analise
  });
}

exports.connection = connection;
exports.query = query;

Запрос

const status1 = await mysql.query("SELECT `status` FROM `server_status`");
  console.log(status1); //it's return undefined

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 03 мая 2020

Используйте обещание для mysql, вы не можете использовать return в функции обратного вызова.


const mysql = require('mysql');
const connection = mysql.createConnection({
    host: config.URL,
    user: config.dbUser,
    password: config.dbPassword,
    database: config.database,
});
connection.connect(function(err) {
    if (err) {
        console.error('[MYSQL] Error on Connection: ' + err.stack);
        return;
    }

    console.log('[MYSQL] Connected with ID ' + connection.threadId + '!');
});

function query(sql) {
    return new Promise(resolve => {
        connection.query(sql, function(error, result, fields) {
            if (error) return error;
            const analise = JSON.stringify(result[0]);
            console.log(analise); //it's return the value correct
            resolve(analise);
        });
    });
}

exports.connection = connection;
exports.query = query;
const status1 = await mysql.query("SELECT `status` FROM `server_status`");
...