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))
И, как верно заметили выше, каждый раз создавать и закрывать подключение к БД не есть хорошая практика.