前台获取的数据是一个数组形式,怎样循环后将该数据插入数据库,目前这个代码无法循环,只能在数据库插入一条数据是为什么?求指导,谢谢!
module.exports = function(sender) {
var yjDBService = global.yjRequire("yujiang.Foil").yjDBService;
var _getNewSN = global.yjRequire("yujiang.Foil.Biz","sn/_getNewSN.js");
var async = require('async');
var data = sender.req.body;
//以上都是引用的公司框架和一些组件
var events = {
"inserted" : insertData,
"updated" : updateData
}
var fn = null;
for(var i in data){
fn = events[i];
var param = data[i];
if(fn){
fn(param);
}else{
sender.error(new Error("Param is not found!"))
}
}
function insertData(data){
var events = [];
for (var i = 0; i < data.length; i++) {
(function(i){
var obj = data[i];
function insert(callback){
_getNewSN({
query : {category : "ProjectOID_" + obj.ProjectOID},
success : function(sn){
var param = [parseInt(obj.FunctionCode),
parseInt(obj.StartRegister) ,
parseInt(obj.Length) ,
obj.Description,
obj.ProjectHardwareOID ,
obj.Port,sn.SN];
var sql = "insert into " +
"plcModbusDB(FunctionCode,StartRegister," +
"Length,Description,ProjectHardwareOID," +
"Port,DataID) values(?,?,?,?,?,?,?)";
yjDBService.exec({
sql:sql,
parameters : param,
success : sender.success,
error : sender.error
});
},
error : sender.error
})
}
events.push(insert);
})(i)
}
async.waterfall(events,function(err,result){
if(err){
sender.error(err);
}else{
sender.success(result);
}
})
}
function updateData(data){
var sql = "update plcModbusDB " +
"set FunctionCode=?,StartRegister=?,Length=?,Description=? " +
"where OID = ?";
yjDBService.exec({
sql:sql,
parameters : [data.FunctionCode , data.StartRegister , data.Length , data.Description , data.OID],
success : sender.success,
error : sender.error
});
}
}
拼接一条sql
insert into 表名(字段名1,字段名2)values(值a1,值b1), (值a2,值b2), (值a3,值b3)...