Я написал класс фабрики баз данных, который будет обрабатывать операции связывания базы данных в приложении
Поскольку я импортирую его в процессе рендеринга (некоторые abc.html) под тегом script, он не подключается к mysql и показывает ошибки "ER_ACCESS_DENIED_ERROR "
КЛАСС БАЗЫ ДАННЫХ
var mysql = require('mysql');
class Database{
constructor(dbconfig) {
this.dbconfig = dbconfig;
this.connection = this.createConnection(this.dbconfig);
}
createConnection(databaseConfig){
return mysql.createConnection({
databaseConfig
});
}
openConnection() {
this.connection.connect(function (err) {
if (err) { // in case of error
console.log(err.code);
console.log(err.fatal);
return false;
}
return true; // for successfull connection
});
}
onConnectionError() {
return {error: "Unable to make the connection to database"}
}
closeConnection() {
this.connection.end(function () {
console.log("Database connecion closed");
});
}
execute(query) {
this.connection.connect(function (err) {
if (err) { // in case of error
console.log(err.code);
console.log(err.fatal);
return onConnectionError();
}
return this.makeQuery(query); // for successfull connection
});
}
makeQuery(query) {
this.connection.query(query, function(err, rows, fields) {
if(err){
console.log("An error ocurred performing the query.");
console.log(err);
return false;
}
console.log("Query succesfully executed", rows);
return rows;
});
}
}
module.exports = Database;
index.html
<body>
<h1>Mysql test connection</h1>
</body>
<script>
var config = require('./configuration_loader');
var DatabaseFactory = require('./database_factory');
var dbFactory = new DatabaseFactory(config.database);
var query = "SELECT * FROM `users`";
var result = dbFactory.execute(query);
console.log(result);
</script>