Я использую узел mysql для подключения к внешней БД, и я могу console.log
получить результаты запроса, но когда я пытаюсь вернуть данные, я получаю Promise pending
.
Вот функция -
export function get_info() {
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'xxxxxx',
user: 'bob',
port: 'xxxx',
password: 'bob',
database: 'li_webform'
});
connection.connect(function (err) {
if (err) throw err;
connection.query("SELECT Name FROM webform", function (err, result) {
if (err) throw err;
//console.log(result); **This works**
//console.log(result[0].Name);
return result;
});
});
}
Я пытаюсь установить переменную, равную возвращаемому значению, как это
var newVar = get_info();
console.log(newVar);
, но я получил обещание в ожиданиинота.Я считаю, что это как-то связано с асинхронной природой JavaScript.Я пытался после этого поста Как правильно вернуть результат из MySQL с Node? , но не могу заставить его работать.
Вот что я пробовал после этого поста
export function get_info(callback) {
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'xxxxx',
user: 'bob',
port: 'xxxxxx',
password: 'bob',
database: 'li_webform'
});
connection.connect(function (err) {
if (err) throw err;
connection.query("SELECT Name FROM webform", function (err, result) {
if (err) throw err;
//console.log(result);
//console.log(result[0].Name);
return callback(result);
});
});
}
Затем я пытаюсь использовать его через
var stuff_i_want = '';
get_info(function (result) {
stuff_i_want = result;
console.log(stuff_i_want);
});
Но я не получаю вывод
Редактировать ** Вот новая попытка
export function get_info() {
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'xxxx',
user: 'bob',
port: 'xxxxxx',
password: 'bob',
database: 'li_webform'
});
connection.connect(function (err) {
if (err) throw err;
connection.query("SELECT Name FROM webform", function (err, result) {
if (err) throw err;
//console.log(result);
//console.log(result[0].Name);
return result;
});
});
}
и второйчасть
get_info().then((callbackData)=>{
console.log("Data: ", callbackData)
}).catch((error)=>{
console.log("Error", error)
});