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 и продолжится, когда вернется результат