正在做一个零件价格查询的小系统 用的 node.js+mysql
想实现的是通过零件的ID查询出价格
麻烦的地方是 一共有4间公司的数据,而零件会在哪一间或几间公司的数据中出现是未知的,而且需求一次查询多个零件的价格。即:
输入一个或多个零件ID,各ID返回4个价格。
现在用的代码如下,貌似只能跑一次查询。网上查了一下好像应该用 async? 请大神们指导
user.js
//根据零件编号得到价格
User.getPriceByPartNo = function getPriceByPartNo(PRT_NO, callback) {
pool.getConnection(function (err, connection) {
var tblarr = ["JF","HT","GQ"];
var getPriceByPartNo_Sql = ["","","",""];
//var getPriceByPartNo_Sql1 = "SELECT PRT_NO, STOCK, SRP as JFSRP FROM car_db.jf WHERE PRT_NO in ("+instring+")";
for(var i=0; i<tblarr.length;i++) {
getPriceByPartNo_Sql[i] = "select SRP as " + tblarr[i] + "SRP from car_db." + tblarr[i] + " WHERE PRT_NO = '"+ PRT_NO +"'";
}
var sqlstring = getPriceByPartNo_Sql.join(";") +
"select PART_NO_REPLACE from car_db.id_mapping WHERE PART_NO = '"+ PRT_NO+ "';"+
"select FLAG from car_db.LARGE WHERE PART_NO = '"+ PRT_NO+ "';";
console.log(sqlstring);
connection.query(sqlstring, function (err, result) {
connection.release();
if (err) {
console.log("getPriceByPartNo Error: " + err.message);
return;
}
console.log("invoked[getPriceByPartNo]");
console.log(result);
});
});
};
index.js
router.post('/', function(req, res) {
var PRT_NO = req.body['partNo'],
PRTARR = PRT_NO.toString().split(","),
STOCK = null,
JFSRP = null,
HTSRP = null,
CSSRP = null,
GQSRP = null,
FLAG = null,
PRT_NO_REPLACE = null;
var resultComb = [];
for(var i=0; i<PRTARR.length;i++) {
User.getPriceByPartNo(PRTARR[i], function (err, results) {
resultComb[i] = [ PRTARR[i], results.JFSRP, results.HTSRP,results.CSSRP,results.GQSRP,results.PRT_NO_REPLACE, results.FLAG];
});
console.log(resultComb);
if(resultComb == '')
{
res.locals.error = '零件不存在';
res.render('index',{title:'主页'});
return;
}else{
}
res.render("result",{title:"主页", result: resultComb});
}
return;
});