选择Query in for loop使用Node JS



我是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;

最新更新