Javascript 请求node.js后浏览器显示错误

Javascript 请求node.js后浏览器显示错误,javascript,mysql,node.js,Javascript,Mysql,Node.js,我正在尝试使用node和mysql向数据库插入一些数据,我设法完成了这项工作,但在浏览器不断加载查询响应后,我尝试了池化,但仍然没有发生任何事情 这是我的密码 var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); var bodyParser = require('body-parser'); var urlencodedPa

我正在尝试使用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传递到节点

<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>

数据库操作后,您不会向浏览器发送任何响应;您只是向控制台发送了一个输出;浏览器正在等待从未出现的响应

如果插入res.sendFile_u_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(如果有),result有一个名为insertId的属性。

希望这有帮助!

数据库操作后,您不会向浏览器发送任何响应;您只是向控制台发送了一个输出;浏览器正在等待一个从未出现的响应。非常感谢,先生。它成功了:。只是想知道如果插入后,我想获取行数并将其发送到浏览器,而不使用res.sendFile;可能吗?就像通知是如何工作的?非常感谢它的工作,有没有一种方法可以让它在不重新加载页面的情况下工作?我的意思是,每次我向数据库添加数据并将插入的数据放入表中时,我都会更新总数或行数,而无需重新加载页面,就像ajax在ajax响应时仅刷新某些div一样?当然,您可以通过ajax发布数据并接收响应。如果您发送了一个正确的AJAX请求,上面的数据库代码仍然可以使用。谢谢,先生,我将尝试使用该过程使其工作

   var id = result.insertId