nodejs 批量修改

表格 t_income 如下所示

1. mysql 设置联合索引

alter table t_income add unique index(app_key,type,record_time,status);

2. controller 层
    updateBatch: async function(ctx, next){
        let res = await testService.updateBatch(ctx.params.record_time,ctx.input);
        return response.map(ctx, {success: res});
    }

3. service 层

   updateBatch: async function(record_time, data){
        for (let key of data){
            if (!key.create_time){
                key.create_time = new Date().getTime();
            }
            key.update_time = new Date().getTime();
        }
        let res = await testModel.updateBatch(data, record_time);
        return res;
    }

4. model 层
    updateBatch: async function(data, record_time){
        let values = '';
        for (let key of data){
           values += '('+ record_time +',' + key.app_key + ',' + key.type +',' +key.money +','+key.create_time+','+key.update_time+','+key.status+'),'
        }
        values = values.substr(0,values.length-1);
        let sql = 'insert into t_income' +
            '(record_time, app_key, type, money,create_time, update_time,status)' +
            'values'+ values +' ON DUPLICATE KEY UPDATE money= VALUES(money),status = values(status);'
        let res = await db.readMysql.raw(sql);
        return res[0].changedRows >= 1;
    }

测试数据:

结果:

由 app_key, type, status, record_time 组成的唯一索引,如果传入的该4个值相同,则视为存在该条记录,则修改, 否则视为不存在,则插入

 demo:  https://github.com/VikkiLrr/nodejs_update_batch.git

猜你喜欢

转载自www.cnblogs.com/v1k1i1/p/9471707.html
今日推荐