gpt4 book ai didi

javascript - 为什么我会收到此错误 "Error: Cannot enqueue Handshake after already enqueuing a Handshake."?

转载 作者:行者123 更新时间:2023-11-29 15:34:20 25 4
gpt4 key购买 nike

嘿,大家好,我只是想制作一个简单的表单,将数据发送到 mySQL 数据库。我的问题是提交后我无法再提交另一份。它只允许我提交表单一次,然后在第二次提交后,我收到此错误“错误:在已经排队握手后无法排队握手。”我在网上查了一下,似乎每个表单提交后都需要重新启动与mysql的连接。我尝试过将其放入一个函数中,但似乎无法让它工作。

//require packages

var express = require("express");
var app = express();
var path = require("path");
var mysql = require("mysql");
var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

//connect to our database

var con = mysql.createConnection({

host: "localhost",
user: "root",
password: "yourRootPassword",
database: "mydb"
});

//joining index.html to get route
app.get("/", function(req, res) {
res.sendFile(path.join(__dirname + "/index.html"));
});

//setting post route to /submit >> how we post to database>>
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
con.connect(function(err) {
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");
res.end();
});
});
});


app.listen(3000);
console.log("Running at Port 3000");

最佳答案

您正在连接多次,但没有关闭连接。我使用连接池。您这样做的方式可能会导致大量建立开放连接,从而导致服务器瘫痪。我还会执行 res.status(200).send("Insertcompleted"),但看起来您有一些调试代码。

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();
});
});
});

关于javascript - 为什么我会收到此错误 "Error: Cannot enqueue Handshake after already enqueuing a Handshake."?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58402322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com