Отправка данных формы в MySQL с помощью Node.js

Я пытаюсь написать простой server.js в Node, который отправляет данные формы из моего html файла в MySQL. Но я получаю синтаксическую ошибку. Я разместил код и ошибку ниже. Я изо всех сил пытаюсь решить эту проблему.

Ошибка

http://localhost:3000/submit

Error: No default engine was specified and no extension was provided.
    at new View (C:\website\node_modules\express\lib\view.js:61:11)
    at Function.render (C:\website\node_modules\express\lib\application.js:570:12)
    at ServerResponse.render (C:\website\node_modules\express\lib\response.js:1008:7)
    at C:\website\index.js:21:9
    at Layer.handle [as handle_request] (C:\website\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\website\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\website\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\website\node_modules\express\lib\router\layer.js:95:5)
    at C:\website\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (C:\website\node_modules\express\lib\router\index.js:335:12)

index.html

<form action = "/submit" method = "post">
    <input id = "name" type = "text" name = "name" placeholder = "Type your name...">
    <input id = "message" type = "text" name = "message" placeholder = "Type message...">
    <input class = "submit_message" type = "submit" value = "Send">
</form>

index.js

var express = require('express');
var app = express();
var mysql = require('mysql');
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({ extended: false });

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static('public'));

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

connection.connect();

app.get('/submit',function(req,res) {
    res.render('index');
});

app.post('/submit',urlencodedParser, function(req, res, next) {
    console.info(req.body.name);
    console.info(req.body.message);
    connection.connect(function(err) {
        if (err) throw  err;
        console.info("connected");
        var sql = "INSERT INTO `users` (`name`,`message`) VALUES ('" + req.body.name + "', '" + req.body.message + "')";
        con.query(sql, function(err, result)  {
            if (err) throw err;
            console.info("table created");
        });
    });
    res.render('index', {title: 'Express'});
});

connection.end();

app.listen(3000, function () {
    console.info('Listening on port 3000');
});

База данных MySQL

Так должна выглядеть моя база данных

Отправка данных формы в MySQL с помощью Node.js

что такое индекс в функции рендеринга, это html или ejs?

Akshay 01.05.2018 16:12

мне нужно использовать app.set('view engine', 'jade');

User786 01.05.2018 16:20

Вам больше не нужно использовать движок просмотра ... но какую версию express вы используете? вы можете просто использовать res.sendFile('index.html file location')

Pogrindis 01.05.2018 16:33
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
3 489
1

Ответы 1

Я провел рефакторинг вашего кода в соответствии с указанным вопросом. например, вам нужно упомянуть весь наш статический контент внутри общедоступного каталога (например, ваш index.html). Также вы сделали синтаксическую ошибку, т.е. вы написали con.query(sql, function(err, result) вместо connection.query(sql, function (err, result), вместо рендеринга файла index.html, как вы делали res.render('index', {title: 'Express'});. лучше отправить файл на свой public / index.html res.sendFile('public/index.html', { root: __dirname });, как указано @Pogrindis


var express = require('express');
var app = express();
var mysql = require('mysql');

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


var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({ extended: false });

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static('public'));

app.set('view engine', 'jade');
app.use(express.static(__dirname + '/public'));

app.get('/', function (req, res) {
    res.render('index.html');
});

app.post('/submit', urlencodedParser, function (req, res) {
    console.info("Im here");
    console.info(req.body.name);
    console.info(req.body.message);
    connection.connect(function (err) {
        if (err) throw err;
        console.info("connected");
        var sql = "INSERT INTO `users` (`name`,`message`) VALUES ('" + req.body.name + "', '" + req.body.message + "')";
        connection.query(sql, function (err, result) {
            if (err) throw err;
            console.info("table created");
        });
    });
    res.sendFile('public/index.html', { root: __dirname });
});


app.listen(3000, function () {
    console.info('Listening on port 3000');
});

пожалуйста, следуйте пути к файлу как:

Я успешно могу сохранить данные в моей БД, которые были введены из текстового поля ввода (имя, сообщение) в index.html. Удачного кодирования !!

Другие вопросы по теме