Делать действия MySQL по вызову - Node.js - PullRequest
0 голосов
/ 02 ноября 2018

Я изучал некоторые Node.js и пытался создать программу, в которой вы вводите имя пользователя и пароль, и она сверяется с базой данных MySQL. Я не знаю, правильно ли я делаю весь бизнес аутентификации, но мой вопрос заключается в следующем: Можете ли вы вызвать функцию MySQL после начала кода (т.е. при каком-либо вызове функции).

Можете ли вы выполнить действие MySQL при вызове функции?

Я смотрел в Интернете и задавал разные вопросы о переполнении стека, но все еще не совсем понял. Возможно, мне не хватает трюка с тем, что на самом деле делает Node.js.

Это мой код:

HTML:

<html>
    <head>
        <title>Basic User Information</title>
    </head>
    <body>
        <form action="http://localhost:8888/user" method="POST">
            Username: <input type="text" name="username"> <br>
            Password: <input type="text" name="password"> <br></select> 
            <input type="submit" value="submit">        
        </form>
    </body>
</html>

Node.js:

//import the express module
var express = require('express');

//import body-parser
var bodyParser = require('body-parser');

//store the express in a variable 
var app = express();

var mysql = require('mysql');

var con = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "password"
});

con.connect(function(err) {
    if (err) throw err;
    console.log("Connected!");
    con.query("CREATE DATABASE authtest", function (err, result) {
        if (err) throw err;
        console.log("Database created");
    });

    con.query("CREATE TABLE users (username VARCHAR(255), password VARCHAR(255))", function (err, result) {
        if (err) throw err;
        console.log("Table created");
    });
});

//configure body-parser for express
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());

//allow express to access our html (index.html) file
app.get('/index.html', function(req, res) {
    res.sendFile(__dirname + "/" + "index.html");
});

//route the GET request to the specified path, "/user". 
//This sends the user information to the path  
app.post('/user', function(req, res){
    response = {
        username : req.body.username,
        password : req.body.password
    };

    //this line is optional and will print the response on the command prompt
    //It's useful so that we know what information is being transferred 
    //using the server
    console.log(response);

    //convert the response in JSON format
    res.end(JSON.stringify(response));

    con.connect(function(err) {
        if (err) throw err;
        var sql = "INSERT INTO users (username, password) VALUES (response.username, response.password)";
        con.query(sql, function (err, result) {
            if (err) throw err;
            console.log("1 record inserted");
        });
    });
});

//This piece of code creates the server  
//and listens to the request at port 8888
//we are also generating a message once the 
//server is created
var server = app.listen(8888, function(){
    var host = server.address().address;
    var port = server.address().port;
    console.log("Example app listening at http://%s:%s", host, port);
});

Edit:

Должен ли я сделать это в другом сценарии? Итак, есть один для инициализации страницы и один для вставки данных в базу данных MySQL?

1 Ответ

0 голосов
/ 02 ноября 2018

насколько я могу видеть в вашем коде, вы устанавливаете INSERT в таблице пользователей с данными, передаваемыми формой, и настраиваете сервер на ответ до завершения действия, чтобы страница все равно получала awnser, но при этом вопрос, ДА, действия, которые вы помещаете в «index.js» вашего сервера узлов, запускаются сразу после его запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...