Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我会出现这个错误;错误:在已将握手排队后,无法将握手排队。";?_Javascript_Mysql_Node.js_Forms_Express - Fatal编程技术网

Javascript 为什么我会出现这个错误;错误:在已将握手排队后,无法将握手排队。";?

Javascript 为什么我会出现这个错误;错误:在已将握手排队后,无法将握手排队。";?,javascript,mysql,node.js,forms,express,Javascript,Mysql,Node.js,Forms,Express,大家好,我只是想制作一个简单的表单,将数据发送到mySQL数据库。我的问题是在我提交后,我不能再提交另一个。它只允许我提交表单一次,然后在第二次提交表单后,我收到了这个错误“错误:在已经将握手排队后无法将握手排队”。我已经在线查看,似乎需要在每个表单提交后重新启动与mysql的连接。我已经试着把一个功能,但似乎无法让它工作 //需要软件包 var express=要求(“快递”); var-app=express(); var路径=要求(“路径”); var mysql=require(“my

大家好,我只是想制作一个简单的表单,将数据发送到mySQL数据库。我的问题是在我提交后,我不能再提交另一个。它只允许我提交表单一次,然后在第二次提交表单后,我收到了这个错误“错误:在已经将握手排队后无法将握手排队”。我已经在线查看,似乎需要在每个表单提交后重新启动与mysql的连接。我已经试着把一个功能,但似乎无法让它工作

//需要软件包
var express=要求(“快递”);
var-app=express();
var路径=要求(“路径”);
var mysql=require(“mysql”);
var bodyParser=require(“主体解析器”);
use(bodyParser.urlencoded({extended:false}));
use(bodyParser.json());
//连接到我们的数据库
var con=mysql.createConnection({
主机:“本地主机”,
用户:“根”,
密码:“yourRootPassword”,
数据库:“mydb”
});
//加入index.html以获取路由
应用程序获取(“/”,函数(请求,恢复){
res.sendFile(path.join(uu dirname+“/index.html”);
});
//设置发布路线/提交>>我们如何发布到数据库>>
应用程序发布(“/提交”,功能(请求、回复){
//req.body.nameOfInput
var name=req.body.name;
var email=req.body.email;
var username=req.body.username;
res.write('您发送了名称“'+req.body.name+”);
res.write('您发送了电子邮件“'+req.body.email+”);
res.write('您发送了用户名“'+req.body.username+”);
//将数据插入sql变量
con.connect(功能(错误){
如果(错误)抛出错误;
var-sql=
在表单(名称、电子邮件、用户名)中插入值(''+
名字+
"', '" +
电子邮件+
"','" +
用户名+
"')";
con.query(sql、函数(错误、结果){
如果(错误)抛出错误;
控制台日志(“插入1条记录”);
res.end();
});
});
});
app.listen(3000);

console.log(“在端口3000运行”)您正在连接多次,但未关闭连接。我使用连接池。您这样做可能会导致大量开放连接的建立,这将导致服务器停机。我还将执行res.status(200.send)(“Insert completed”),但看起来您有一些调试代码

var myPool;
function connect() {
    return new Promise((resolve, reject) => {
        pool = mysql.createPool({
            connectionLimit: 10,
            host     : this.host,
            user     : this.user,
            password : this.password,
            database : this.database
        });
        resolve(pool);
    });
}

connect().then(pool => {
    myPool = pool;
})

app.post("/submit", function(req, res) {
  //req.body.nameOfInput
  var name = req.body.name;
  var email = req.body.email;
  var username = req.body.username;
  res.write('You sent the name "' + req.body.name + '".\n');
  res.write('You sent the email "' + req.body.email + '".\n');
  res.write('You sent the username "' + req.body.username + '".\n');
  //inserting data into sql var
  myPool.getConnection((err, con) => {
    if (err) throw err;
    var sql =
      "INSERT INTO form (name, email,username) VALUES ('" +
      name +
      "', '" +
      email +
      "','" +
      username +
      "')";
    con.query(sql, function(err, result) {
      if (err) throw err;
      console.log("1 record inserted");
      con.release();
      res.end();
    });
  });
});

这更有意义,但是我有一个问题,我应该在哪里输入以前的连接信息,比如主机用户密码数据库?没关系……这是一个愚蠢的问题。非常感谢:)这帮了我很大的忙,我以前从未探索过连接池。