javascript - 如何使用 node .js 将 html 的值表添加到 mysql
问题描述
我正在做一个关于自动时间表生成系统的项目。我是 node .js 的新手。这是将值表从 html 插入到 mysql 的程序。当我运行这个程序时,它会导致死锁情况。
这是我的索引 .js 文件。
var express=require('express');
var app=express();
app.set('view engine','ejs');
app.use(express.static('./public'));
app.use(express.static("."));
var Array=require('node-array');
var mysql = require('mysql');
var s=require('string');
//Connection pool
var pool=mysql.createPool({
connectionLimit:10,
host: "localhost",
user: "root",
password: "user@1235",
database:"time_table"
});
app.post('/expt2',urlencodedParser,function(req,res){
var table=req.body.table1;
console.log(req.body);
var data=[];
for(var key in (req.body)){
data.push(req.body[key]);
}
for(i=0;i<(data.length-1);i++)
console.log(data[i]);
var i=0;
while(i<(data.length-1))
{
lg=data[i];
console.log(lg.substr(2,1));
if(lg.substr(2,1)=="4")
{
sem=4 ;
room="lh1";
}
else if(lg.substr(2,1)=="6")
{
sem=6;
room="lh2";
}
else if(lg.substr(2,1)=="8")
{
sem=8;
room="lh3";
}
else
{
sem=5;
room="lh2";
}
day="Thrusday";
console.log(room);
console.log(sem);
pool.getConnection(function(err,con){
if (err) throw err;
console.log("Connected!");
console.log(lg);
pool.query("select fid from course where
cid='"+lg+"'",function(err,result)
{
if(err)throw err;
else
{
console.log("okay");
console.log(result);
Object.keys(result).forEach(function(key){
row=result[key];
console.log(row.fid);
ob=row.fid;
console.log(ob);
var sql="INSERT INTO classroom(sem,day,timings,fid,cid,room_name)
VALUES('"+sem+"','"+day+"','12:00:00','"+ob+"','"+cid+"','"+room+
"');"
con.query(sql,function(err,result)
{
if(err)throw err;
console.log("one row inserted");
//con.release();
});
});
}
});
});
i++;}
});
这是 expt2.html 文件。
<html>
<head>
<title>Master-Timetable</title>
<link rel="stylesheet"
href="/public/asset/css/bootstrap.min.css" type="text/css"/>
<script type="text/javascript" src="/public/asset/popper.min.js">
</script>
<script src="/public/asset/js/bootstrap.min.js"
type="text/javascript"></script>
<script src="/public/asset/jquery-3.2.1.min.js"
type="text/javascript"></script>
</head>
<body>
<form id="contacth" method="POST" action="/expt2"></form>
<table id="table1">
<tr class="head">
<th>Time->day|</th>
<th>7:30-8:30</th>
<th>8:30-9:30</th>
<th>9:30-10:30</th>
<th rowspan="19">BREAK</th>
<th>11:00-12:00</th>
<th>12:00-1:00</th>
<th rowspan="19">LUNCH BREAK</th>
<th>2:30-3:30</th>
<th>3:30-4:30</th>
<th>4:30-5:30</th>
</tr>
<tr>
<th rowspan="3" class="parent" value="monday">Monday</th>
<td class="child"><input type="text" maxlength="5" name="am1"
form="contacth"></td>
<td ><input type="text" maxlength="5" name="am2" form="contacth"/>
</td>
<td><input type="text" maxlength="5" name="am3" form="contacth"/>
</td>
<td><input type="text" maxlength="5" name="am4" form="contacth"/>
</td>
<td><input type="text" maxlength="5" name="am5" form="contacth"/>
</td>
<td><input type="text" maxlength="5" name="am6" form="contacth"/>
</td>
<td><input type="text" maxlength="5" name="am7" form="contacth"/>
</td>
<td><input type="text" maxlength="5" name="am8" form="contacth"/>
</td>
</tr>
<tr>
<td>
<input type="submit" name="t_save" value="save" class="btn btn-
success" form="contacth"/><br/>
</td>
</tr>
</table>
</body>
</html>
我得到了使用“异步”和“等待”的建议。但我并没有真正了解在我的代码中使用“异步”和等待的位置。
解决方案
尝试不直接查询池。将第一个 pool.query 替换为 con.query。
看到这个问题:使用 getConnection() 和在 node.js 中直接使用池与 node-mysql 模块的区别?
推荐阅读
- php - 我如何加强 Wordpress 的自定义 Facebook 登录的安全性?
- azure-active-directory - Azure Runbook - [AzureAD] Get-AzureADUser -All
- java - 春季启动中的 NullPointerException
- java - 在密码验证例程中使用 if 语句查询 do while 循环
- asp.net - 在 Azure 表存储中不起作用的两个日期之间进行筛选
- windows - 我想在这里用 ahk 做同样的事情,但使用鼠标右键
- google-sheets - 在谷歌表格中合并 FILTER 的列结果
- c# - 即使存在属性属性也无法在 xml 中找到元素
- python - 我正在编写一个算法,但无法创建一个功能性布尔循环,该循环在语句为真时停止
- javascript - FireBase 找不到 firebase 命名空间;