Только начал изучать Node.js. До этого писал как на php так и на python. Но в ноде все своеобразное. Я хочу сделать класс соединения с БД, и 2мя методами - получения данных и вставики данных (selec и insert) в БД. Я сделал класс
class Db {
constructor() {
this.mysql = require('mysql');
this.sql = this.mysql.createConnection({
host: "127.0.0.1",
database: "sql-test-db",
user: "root",
password: ""
});
this.sql.connect(function(err) {
if (err) throw err;
});
}
query(sql) {
this.sql.query(sql, function (err, result) {
if (err) throw err;
return result;
});
}
insert(sql, params) {
this.sql.query(sql + ' ?', params, (err, results, fields) => {
if (err) throw err;
})
}
}
module.exports = Db;
Далее в файле index.js я его получаю и пытаюсь передать в переменную результат SELECT запроса
const Db = require(__dirname + '/models/Db');
let db = new Db();
let result = db.query("SELECT * FROM tbl_chat_room_users");
console.log(result);
Но в итоге получаю undefined Я понимаю, что это связано с тем, что нода асинхронный язык и в момент выполнения console.log(result); в result еще не пришли данные из класса Db, но как тогда реализовывать работу с классами? Я пытался решить проблему через события. Сделать так что бы в db.query вместо return создавалось событие emit('returnSql', result), а потом вне класса (в index.js) пытаться его ловить на on, но ничего не сработало да и выглядит кастыльно. Можете подсказать, в чем я ошибся? Заранее спасибо!