Я написал функцию, которая проверяет соединение с базой данных MySQL в Electron. Однако моя функция всегда возвращает end_of_function. Даже если я дам ему входные значения, это не имеет никакого смысла.
// Function connect to database
function connect_to_database(inp_host, inp_username, inp_password, inp_database_name, inp_table_prefix){
var mysql = require('mysql');
// Add the credentials to access your database
var connection = mysql.createConnection({
host : inp_host,
user : inp_username,
password : inp_password,
database : inp_database_name
});
// connect to mysql
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error){
return_message = "connection_error";
}
return_message = "connected_ok_" + results[0].solution;
});
connection.end();
return "end_of_function";
} // connect_to_database
У меня есть полный индекс. html и индекс. js файлы ниже.
index. html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Setup</title>
<!-- https://electronjs.org/docs/tutorial/security#csp-meta-tag -->
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="../_webdesign/dark/dark.css" />
<!-- // CSS -->
<!-- jQuery -->
<script>window.$ = window.jQuery = require('../javascripts/jquery/jquery-3.4.1.js');</script>
<script src="../javascripts/jquery/jquery-3.4.1.js" charset="utf-8"></script>
<!-- //jQuery -->
<!-- jQuery -->
<script src="./index.js" charset="utf-8"></script>
<!-- //jQuery -->
</head>
<body>
<div id="main_single_column">
<h1>Setup</h1>
<!-- Feedback -->
<div id="feedback_div" class="success">
<p id="feedback_p">Success</p>
</div>
<!-- //Feedback -->
<!-- Database connection form -->
<p>Host:<br />
<input type="text" name="inp_host" id="inp_host" value="localhost" />
</p>
<p>Port:<br />
<input type="text" name="inp_port" id="inp_port" value="" />
</p>
<p>Username:<br />
<input type="text" name="inp_username" id="inp_username" value="root" />
</p>
<p>Password:<br />
<input type="text" name="inp_password" id="inp_password" />
</p>
<p>Database name:<br />
<input type="text" name="inp_database_name" id="inp_database_name" value="quick" />
</p>
<p>Table prefix:<br />
<input type="text" name="inp_table_prefix" id="inp_table_prefix" value="cf_" />
</p>
<p>
<button id="form_connect_to_database_submit">Connect to database</button>
</p>
<!-- //Database connection form -->
</div>
</body>
</html>
index. js
const remote = require('electron').remote;
const app = remote.app;
console.log(app.getPath('userData'));
const fs = require('fs');
// Action = On submit
$(document).ready(function(){
$("#form_connect_to_database_submit").click( function() {
// Feedback
$('#feedback_div').show();
$('#feedback_div').removeClass("success");
$('#feedback_div').addClass("info");
$('#feedback_p').text("Connecting!")
// get all the inputs
var inp_host = $("#inp_host"). val();
var inp_port = $("#inp_port"). val();
var inp_username = $("#inp_username"). val();
var inp_password = $("#inp_password"). val();
var inp_database_name = $("#inp_database_name"). val();
var inp_table_prefix = $("#inp_table_prefix"). val();
// Test connection
var connection_result = connect_to_database(inp_host, inp_username, inp_password, inp_database_name, inp_table_prefix);
if(connection_result != "connection_ok"){
// Connection Failed
$('#feedback_div').removeClass("info");
$('#feedback_div').addClass("error");
$('#feedback_p').text(connection_result)
}
else{
// Connection OK
$('#feedback_div').removeClass("info");
$('#feedback_div').addClass("success");
$('#feedback_p').text("Connected")
// Write data to text file
var app_data = app.getPath("appData")
var app_name = app.getName()
var filepath = app_data + "\\" + app_name + "\\" + "data";
var filename = "database_quick_image_forensics.txt"
var inp_data = "db_host = " + inp_host + "\n" + "db_port = " + inp_port + "\n" + "db_username = " + inp_username + "\n" + "db_password = " + inp_password + "\n" + "db_database_name = " + inp_database_name + "\n" + "db_table_prefix = " + inp_table_prefix;
$('#feedback_p').text("Connected " + filepath)
var write_to_file_result = write_to_file(filepath, filename, inp_data);
// Feedback
$('#feedback_div').removeClass("info");
$('#feedback_div').addClass("success");
$('#feedback_p').text("Connected to " + inp_host + " (" + connection_result + ") and configuration stored at " + filepath)
}
});
$('#inp_host').focus();
});
// Function connect to database
function connect_to_database(inp_host, inp_username, inp_password, inp_database_name, inp_table_prefix){
var mysql = require('mysql');
// Add the credentials to access your database
var connection = mysql.createConnection({
host : inp_host,
user : inp_username,
password : inp_password,
database : inp_database_name
});
// connect to mysql
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error){
return_message = "connection_error";
}
return_message = "connected_ok_" + results[0].solution;
});
connection.end();
return "end_of_function";
} // connect_to_database
// Function write setup
function write_to_file(filepath, filename, inp_data){
// Make dir
if (!fs.existsSync(filepath)){
// console.log("mkdir " + filepath);
fs.mkdirSync(filepath);
}
// Make file
var fullpath = filepath + "\\" + filename;
fs.writeFile(fullpath, inp_data, (err) => {
// throws an error, you could also catch it here
if (err) return err;
});
} // write_to_file