Node js mysql2 = Работа с полученным значением после завершения функции

Не могли бы подсказать как правильно работать с полученными данными из БД

Ниже самый простой код, По идее мне нужно взять значение из таблицы БД - закрыть соединение, и дальше что-то сделать с полученным Value. Но падаю в ошибку not defined,
Мне интересно почему, где я что упускаю?

Пробовал и mysql и mysql2/promise - результат одинаковый После выхода из функции не могу использовать полученное из бд.

Я только учусь, больно не пинайте.

async function main() {
    // get the client
    const mysql = require('mysql2/promise');
    
    // create the connection
    const connection = await mysql.createConnection({host:'localhost', user: 'root', password: 'root', database: 'jsnode', port: '8889'});
    
    // query database
        const [result, fields] = await connection.execute('SELECT * FROM `orders`');
        console.log(result);
    let resVal = result;
    console.log(resVal[0].value);
  };


 main();

console.log(resVal[0].value); // нода падает с ошибкой ***resVal is not defined***

connection.end();

Ответы (1 шт):

Автор решения: ksa

async function возвращает промис. Т.ч. и работать с ней нужно как с промисом.

async function main() {
    // get the client
    const mysql = require('mysql2/promise');
    
    // create the connection
    const connection = await mysql.createConnection({host:'localhost', user: 'root', password: 'root', database: 'jsnode', port: '8889'});
    
    // query database
        const [result, fields] = await connection.execute('SELECT * FROM `orders`');
        console.log(result);
    return result;
  };
(async _ => {
   const res = await main();
   console.log(res[0].value)
})()

Или так

main()
   .this(res => {
       console.log(res[0].value)
   })
   .catch(err => console.log(err))

И, как верно заметили выше, каждый раз создавать и закрывать подключение к БД не есть хорошая практика.

→ Ссылка