Я хочу взять результат из mysql connection.query и сохранить его в глобальной цепочке областей видимости в nodejs - PullRequest
0 голосов
/ 09 октября 2019

Я попытался вывести результат путем сохранения в переменной текущего продукта. Но я не могу использовать его вне функции, поэтому мой массив возвращает пустое значение

var connection = mysql.createConnection({
                host: config.config.mysql.opencart_local.host,
                user: config.config.mysql.opencart_local.user,
                password: config.config.mysql.opencart_local.password,
                database: config.config.mysql.opencart_local.database
                })
var query_current_products = 'select * from table;';
var current_products = [];

  connection.connect(function(err) {
                       if (err) throw err;
                       console.log("Connected!");
                       connection.query(query_current_products, function (err, result) {
                             if (err) throw err;
                             //console.log(result);
                            current_products = result;
                      });

                }
                )
console.log(current_products);

введите описание изображения здесь

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Попробуйте использовать синтаксис async / await для получения результатов

  const mysql = require('mysql'); // or use import if you use TS
    const util = require('util');
    const conn = mysql.createConnection({
   host: config.config.mysql.opencart_local.host,
     user: config.config.mysql.opencart_local.user,
      password: config.config.mysql.opencart_local.password,
      database: config.config.mysql.opencart_local.database
     });
    var current_products = [];
    // 
    var query_current_products = 'select * from table;';

    (async function getProducts () => {
      try {
        const rows = await query( query_current_products);
        console.log(rows);
        current_products=rows;
      } finally {
        conn.end();
      }
    })()
0 голосов
/ 09 октября 2019

используйте этот код:

var query_current_products = 'select * from users';
var current_products = [];
function f() {
    return new Promise(resolve => {
        con.connect(function (err) {
            if (err) throw err;
            console.log("Connected!");
            con.query(query_current_products, function (err, result) {
                if (err) throw err
                resolve(result);
            });
        });
    })
}

async function asyncCall() {
    current_products = await f();
    console.log("outside callback : ", current_products);
}

asyncCall();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...