нее хочу вывести данные.
Проблема в том, что запрос выполняется, данные приходят, но потом куда-то улетучиваются)))
+ я никак не могу разобраться как дождаться результата выполнения запроса, а после уже выводить его.
db.js
...
makeQuery(query) {
this.connection.query(query, (err, result) => {
if(err)
console.log('query error!!!' + err.message);
console.log(result);
return result;
});
}
queries.js
...
function selectUserByName (){
console.log('query start')
var result =db.makeQuery("SELECT * FROM user");
console.log(result);
console.log('query end');
};
в db.js result выводит, а уже в queries.js - нет.
Console:
query start
undefined
query end
*Результат запроса*
Куда девается результат запроса после вызова функции и как сделать структуру async-await чтобы дождаться результата?
Заранее огроменное спасибо!
Я с mysql не работал, но рискну предположить, что makeQuery - это асинхронная операция Ее результата нужно дожидаться в функции selectUserByName Попробуйте сделать selectUserByName асинхронной и дожидайтесь result с помощью await
Пробовал раньше, сейчас перепроверил. Результат тот же...
Код с перепроверкой будьте добры
async function selectUserByName (){ console.log('query start') var result = await db.makeQuery("SELECT * FROM user"); console.log(result); console.log('query end'); };
Вы же заметили, что ретурните результат не из той функции в makeQuery? 😅
Нет, не понял?)
что за вредные советы...
Ну видно, что return нет в функции, в которой ее ждут, а как там должен появится ретурн, меня не волнует)) Там же написано “что-то типо”
а что насчет порядка выполнения? connection.query явно асинхронный и будет выполнен уже после возвращения результата из функции, так что всегда будет возвращаться undefined по идее
Блее… точно))
щит хэппенс)
Кароче вот как примерно должен выглядеть код: function makeQuery(query) { return new Promise((resolve, reject) => { this.connection.query(query, (err, result) => { if (err) { console.log('query error!!!' + err.message); reject(err); retrun; } console.log(result); resolve(result); }); }) } async function selectUserByName (){ console.log('query start') var result = await db.makeQuery("SELECT * FROM user"); console.log(result); console.log('query end'); };
reject без return'а 🤔
😝
Лучше throw new Error(e)
Та делайте как хотите, емое, шо за педанты пошли нынче))
Обсуждают сегодня