Функция электронного подключения к MySQL не выдает ошибку, когда должна - PullRequest
0 голосов
/ 15 января 2020

Я написал функцию, которая проверяет соединение с базой данных 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...