Javascript 为什么我会出现这个错误;错误:在已将握手排队后,无法将握手排队。";?
大家好,我只是想制作一个简单的表单,将数据发送到mySQL数据库。我的问题是在我提交后,我不能再提交另一个。它只允许我提交表单一次,然后在第二次提交表单后,我收到了这个错误“错误:在已经将握手排队后无法将握手排队”。我已经在线查看,似乎需要在每个表单提交后重新启动与mysql的连接。我已经试着把一个功能,但似乎无法让它工作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
//需要软件包
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();
});
});
});
这更有意义,但是我有一个问题,我应该在哪里输入以前的连接信息,比如主机用户密码数据库?没关系……这是一个愚蠢的问题。非常感谢:)这帮了我很大的忙,我以前从未探索过连接池。