Я не очень знаком с MySQL и используемыми вами библиотеками.
Однако полученный вами ответ Promise { <pending> }
состоит в том, что вы не ожидали выполнения запроса.
Поскольку функция помечена как async
и также выполняет асинхронное действие c, она возвращает Обещание, которое необходимо дождаться, чтобы его разрешить.
Приведенный ниже код должен работать :
const mysql = require('mysql2/promise')
const pool = mysql.createPool({
host: 'localhost',
user: 'root',
password: '',
database: 'nodejs',
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
})
async function query(query) {
const result = await pool.query(query)
return result[0]
}
(async () => {
const queryResult = await query('SELECT * FROM `users`');
console.log(queryResult);
} )();
Чтобы понять, как работает asyn c -wait, рассмотрите следующий код:
console.log('I will get printed first');
const asyncFunction = async () => {
await setTimeout(()=> {}, 1000)
console.log('I will get printed third');
return 'hello'
}
(async () => {
const result = await asyncFunction();
console.log(`I will get printed last with result: ${result}`);
})();
console.log('I will get printed second');
Оператор console.log I will get printed last with result
будет ожидать asyncFunction
завершить выполнение перед выполнением.