Отправка данных из HTML-формы в SQL не публикуется - PullRequest
2 голосов
/ 02 мая 2019

У меня есть веб-приложение node.js, сервер SQL, и я работаю локально в коде Visual Studio, а затем синхронизируюсь с Azure.

У меня на домашней странице есть простая форма, которая, когда я нажимаю на сообщение, должна отправлять данные в таблицу в моей базе данных SQL.Однако ничего не происходит вообще.Я перенаправлен на страницу пользователя и не получаю ошибок, но я также ничего не получаю в журнале консоли или в сообщениях, опубликованных в таблице.

Вот что у меня есть:

app.js

var express = require('express');
var app = express();
var mysql = require("mysql");
var bodyParser = require('body-parser');

var config = {
      host: '',
      user: '',
      password: '',
      database: '',
      port: 3306,
      ssl: true
    };

var connection = new mysql.createConnection(config);

app.use('/node_modules',  express.static(__dirname + '/node_modules'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

app.get('/Template/views/home.html',function(req,res){
  res.sendFile('home.html',{'root': __dirname + '/views'});
})

app.get('/Template/views/about.html',function(req,res){
  res.sendFile('about.html',{'root': __dirname + '/views'});
})

app.get('/Template/views/user.html',function(req,res){
  res.sendFile('user.html',{'root':__dirname + '/views'})
})

app.post('/Template/views/user.html', function(req, res){   
  var fName = req.body.first_name;
  connection.query("INSERT INTO `Persons` (name) SET ?", fName.toString(), function(err, result) { function(err, result) {
    if(err) throw err;
      console.log("1 record inserted");
    });
    res.send('user.html',{'root':__dirname + '/views'})
  });

app.listen(process.env.PORT);

home.html

<!DOCTYPE html>
<html lang="en">
    <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <meta name="description" content="">
      <meta name="author" content="">
      <title>Template</title>
      <link href="../node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    </head>
    <body>
      <form action="/Template/views/user.html" name="formA">
        First Name: <input type="text" name="first_name"> <br>
        Last Name: <input type="text" name="last_name"> <br>
        <input type="submit" value="submit">        
      </form>
    </body>
</html>

Кто-нибудь может увидеть, что я здесь делаю неправильно?

Ответы [ 2 ]

1 голос
/ 02 мая 2019

Попробуйте подключиться к соединению после его определения:

connection.connect();

затем выполните запрос и, наконец, закройте соединение с помощью:

connection.end();
0 голосов
/ 02 мая 2019

Добавьте метод = 'post' в форму.

<form action="/Template/views/user.html" method='post' name="formA">

И изменить серверный код

app.get('/Template/views/user.html',function(req,res){
  res.sendFile('user.html',{'root':__dirname + '/views'})
})

Кому:

app.post('/Template/views/user.html',function(req,res){
  res.sendFile('user.html',{'root':__dirname + '/views'})
})

и начните соединение с БД, как показано ниже.

var connection = new mysql.createConnection(config);
connection.connect();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...