后台数据怎样可以循环插入数据库?

前台获取的数据是一个数组形式,怎样循环后将该数据插入数据库,目前这个代码无法循环,只能在数据库插入一条数据是为什么?求指导,谢谢!
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
    });
}

}

阅读 2k
1 个回答

拼接一条sql
insert into 表名(字段名1,字段名2)values(值a1,值b1), (值a2,值b2), (值a3,值b3)...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题