[英]Post Form data to MySQL using Node.js
I am trying to write a simple server.js in Node, that posts form data from my html file, into MySQL. 我正在尝试在Node中编写一个简单的server.js,它将来自我的html文件的表单数据发布到MySQL中。 But I am getting a Syntax error.
但是我收到语法错误。 I have posted the code and error below.
我已经在下面发布了代码和错误。 I'm struggling to resolve this issue.
我正在努力解决此问题。
Error 错误
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 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 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.log(req.body.name);
console.log(req.body.message);
connection.connect(function(err) {
if (err) throw err;
console.log("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.log("table created");
});
});
res.render('index', {title: 'Express'});
});
connection.end();
app.listen(3000, function () {
console.log('Listening on port 3000');
});
MySQL database MySQL数据库
This is how my database should look like 这就是我的数据库的外观
I have refactored your code, As per question specified. 我已经重构了您的代码,根据指定的问题。 for ex- You need to mention all our static content inside public directory (ie your index.html), Also you have done syntax error ie- you have written
con.query(sql, function(err, result)
instead of connection.query(sql, function (err, result)
, instead of rendering index.html file as you did res.render('index', {title: 'Express'});
its better you send the file to your public/index.html res.sendFile('public/index.html', { root: __dirname });
as specified by @Pogrindis 例如,您需要在公共目录(即您的index.html)中提及我们所有的静态内容,同时您也犯了语法错误,即您编写了
con.query(sql, function(err, result)
而不是connection.query(sql, function (err, result)
,而不是像res.render('index', {title: 'Express'});
那样呈现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.log("Im here");
console.log(req.body.name);
console.log(req.body.message);
connection.connect(function (err) {
if (err) throw err;
console.log("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.log("table created");
});
});
res.sendFile('public/index.html', { root: __dirname });
});
app.listen(3000, function () {
console.log('Listening on port 3000');
});
please follow the file path as : 请按照以下文件路径进行操作:
I am successfully able to persist the data to my DB which has been entered from input text box(name, message) in index.html. 我能够成功地将数据持久保存到从index.html中的输入文本框(名称,消息)输入的数据中。 Happy coding !!
快乐编码!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.