我正在尝试使用 Node 和 mysql 将一些数据插入数据库,我设法完成它,但是在查询响应后,浏览器不断加载,我尝试池化仍然没有任何反应
这是我的代码
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({ extended: false })
var sql = require('mysql');
var pool = sql.createPool({
host : 'localhost',
user : 'root',
password : '',
port : '3306',
database : 'node'
});
app.get('/nodeThis', function (req, res) {
res.sendFile(__dirname + '/insert.html');
});
app.post('/nodeThis', urlencodedParser, function (req, res) {
var post={user_name:req.body.name1,user_what:req.body.what,user_why:req.body.why};
pool.getConnection(function(err, connection){
connection.query('INSERT INTO user SET ?', post, function(err){
if(err){
console.log(err);
}else{
console.log('succes');
}
});
connection.release();
});
});
server.listen(3000);
这是我如何将数据从 HTML 传递到 Node
<html>
<body>
<div>
<form action="/nodeThis" method="post">
<input type="text" name="name1">
<input type="text" name="what">
<input type="text" name="why">
<button class="boom">Submit</button>
</form>
</div>
</body>
</html>
最佳答案
数据库操作完成后,您不会向浏览器发送任何响应;您只是将输出发送到控制台;浏览器正在等待从未到来的响应
如果在 console.log('succes' 后插入 res.sendFile(__dirname + '/insert.html'); 或其他响应);,您将在浏览器上看到输出。
话虽这么说,我希望这只是一个概念证明,而不是生产代码。
根据评论更新
检索受影响的行数
运行后执行数据库插入功能
db.query("insert into table", [data-to-insert], function(err, result){
//to retrieve the number of rows affected
var number_of_rows = result.affectedRows
})
结果有一个名为affectedRows的属性,它允许用户知道有多少行>插入、更新或删除。
检索插入行的主 ID(如果有的话),结果 有一个名为 insertId 的属性。
var id = result.insertId
希望这可以帮助!
关于javascript - 请求node.js后浏览器显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27032864/