我是Nodejs的初学者。检查数据是否已经存在于mysql中,但是,我使用for循环方法检查数据是否已经存在,sql查询完美工作,我想计数有多少数据不存在于mysql中,我在for循环内初始化计数= 0可计数但它在for循环外计数为0,
app.get('/stock_outward', function (req, res) {
var params = req.body;
var counts = 0;
var serial_values = "SV-K8B22490,SV-K8B22491,SV-K8B22492,SV-K8B22493,SV-K8B22494,SV-K8B22495,SV-K8B22496,SV-K8B22497,SV-K8B22498,SV-K8B22499";
var serial_arys = [];
serial_arys = serial_values.split(",");
for(var i=0;i<serial_arys.length;i++)
{
connection.query('select * from stock_inward where s_no = "'+serial_arys[i]+'"', function (error, results, fields) {
if (error) throw error;
//console.log(results.length);
if(results.length == 0)
{
}
else{
counts++;
console.log(counts);
}
});
}
console.log(counts);
});
不这样做,而是通过SQL来做。像这样:
SELECT COUNT(*) AS total FROM stock_inward WHERE s_no NOT IN ('SV-K8B22490','SV-K8B22491','SV-K8B22492','SV-K8B22493','SV-K8B22494','SV-K8B22495','SV-K8B22496','SV-K8B22497','SV-K8B22498','SV-K8B22499')
首先,我认为你应该更新你的查询如:
select * from stock_inward where s_no in ( "'+serial_arys+'"' )
通过这种方式,您可以在一次DB命中中获得所有记录,而不是一次又一次地请求DB数据。
其次,我想我们可以解决你的问题。
let params = req.body;
let counts = 0;