Node.js как вернуть mysql2/promise

Как можно получить rows из функции? возвращает только Promise { } Во всех примерах просто в консоль выводят...

 async function main() {  
 
    const mysql = require('mysql2/promise');  
 
    const connection = await mysql.createConnection({ host: 'localhost', user: 'root', password: 'root', database: 'main' });  
 
    const [rows, fields] = await connection.execute('SELECT * FROM `users` WHERE `ID` = ?', [1]);  
 
    return rows;  
 
}   

console.log(main()); 

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

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

Вы не дожидаетесь разрешения промиса.

async function main() {  
    const mysql = require('mysql2/promise');  
    const connection = await mysql.createConnection({ host: 'localhost', user: 'root', password: 'root', database: 'main' });  
    const [rows, fields] = await connection.execute('SELECT * FROM `users` WHERE `ID` = ?', [1]);  
    return rows;  
}   

// Вариант 1 - 
main().then((res) {
    console.log(res)
});

// Вариант 2

async function waiter() {
    const res = await main();
    console.log(res)
}

waiter();
// Можно вот так
async function waiter2() {
    await main().then((res) -> {
        // Успешный ответ
        console.log(res)
    }).catch((e) => {
        // Ошибка
    });
}

waiter2();

В первом варианте код побежит дальше, а когда main вернет результат, то начнется выполнение кода из .then

Во втором случае, выполнение функции остановится на await и продолжится, когда вернется результат

→ Ссылка