Как сохранить MySQL-запрос Node в переменной? - PullRequest
0 голосов
/ 18 декабря 2018

Я использую узел 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)
 });

1 Ответ

0 голосов
/ 18 декабря 2018

Функция возвращает обещание.Вы можете справиться с этим так:

 get_info().then((callbackData)=>{
   console.log("Data: ", callbackData)
 }).catch((error)=>{
    console.log("Error", error)
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...