这是我的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>
并表示:
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-自动递增不为空,
设置名称varchar,
描述varchar。
似乎在提交表单之后,服务器上的bodyparser无法读取表单中的数据。console.log提供name和desc变量的未定义值。如何将信息从输入传递到数据库?
另一个问题是get请求。运行服务器后的第一个请求工作正常。从数据库获取数据的第二个请求返回错误并使服务器崩溃。
1条答案
按热度按时间1l5u6lss1#
我终于找到了问题的答案${sql查询中的set{name}和${description}应该作为引号中的字符串值传递,这意味着“${set{name}”和“${description}”。