大家好,我现在想把一组数据插入数据库中,并且在全部插入数据后统一返回所有数据的插入结果,我听说可以用async.js来实现,但不知道如何使用,请帮一下了。下面是我的一些示例代码,现通过data.length来判读是否执行到最后一条插入命令,但这样是不能保证真正是执行到最后一条的,需要用async.js来重写,请帮忙一下。谢谢!
var data = [ {pid: 1, syncid: 'a'}, {pid: 2, syncid: 'b'}, {pid: 3, syncid: 'c'} ];
function save(table, dataObject, pcallback) { var sql = 'INSERT INTO ' + table + ' SET ?'; pool.acquire(function (error, client) { if (error) { // handle error - this is generally the err from your // factory.create function pcallback(error, null); } else { client.query(sql, dataObject, function (error, rows) { // return object back to pool client.release(); // console.log('from callback:'+ee()); pcallback(error, rows); }); } }); }
function callbackFactory(res, syncid, islast) { return function callback(err, result) { if (err) { console.log('err:' + err); //throw err; } result.syncid = syncid; res.write(result.syncid + ','); if (islast) { res.end(); } }; }
function sync_fee(data, res) { var i, pid, syncid, params, islast, callback; for (i = 0; i < data.length; i += 1) { pid = data[i].pid; syncid = data[i].syncid; params = {pid: pid, syncid: syncid}; islast = (i === data.length - 1); callback = callbackFactory(res, syncid, islast); save('tfee', params, callback); } }