Это фрагмент моего кода HTML и Express:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>TEST</title>
</head>
<body>
<form action="http://localhost:3000/tools" method="POST">
<p>
Set name: <input type="text" name="set_name">
</p>
<p>
Description: <input type="text" name="description">
</p>
<input type="submit" value="Submit">
</form>
</body>
</html>
и Express:
const express = require('express');
const mysql = require('mysql');
const bodyParser = require('body-parser');
const {parse}=require('querystring');
const connection = mysql.createConnection({
host: '127.0.0.1',
user: 'root',
password: '',
database: 'toolscatalog'
});
const app = express();
const urlParser=bodyParser.urlencoded({extended:false});
function dbConnection(SQLquery, result) {
connection.connect();
connection.query(SQLquery, (error, results) => {
if (error) throw error;
result.send(results);
console.log(results);
});
connection.end();
}
app.route('/tools')
.get((req, res) => {
dbConnection('SELECT * FROM tools', res);
});
app.post('/tools',urlParser, (req, res) => {
const set_name = req.body.set_name;
const desc = req.body.description;
console.log(set_name, desc); //console: undefined undefined
dbConnection(`INSERT INTO tools(set_name,description) VALUES (${set_name}, ${desc})`, res);
});
app.listen(3000, function () {
console.log('listening on: 3000')
});
Столбцы MySQL:
- id - автоинкрементне нуль,
- set_name varchar,
- description varchar.
Похоже, что после отправки формы данные из формы не могут быть прочитаны bodyParser на сервере,Console.log предоставляет неопределенные значения name и desc переменных.Как передать информацию из входов в БД?
Другая проблема связана с запросом GET.Первый запрос после запуска сервера работает нормально.Второй запрос на получение данных из БД возвращает ошибку и сбой сервера.