NodeJS – 如何插入多行到MySQL

我试图插入几个(hundres /数千)的logging到MySQL数据库。 我的问题是,我不是很确定怎么做最好的方法。 例:

function saveData(data, callback) { var dataLength = data.length, saved = []; for (var i = 0; i < dataLength; i++) { db.query("INSERT INTO table VALUES (?, ?, ?)", data[i], function(err, res) { if (err) { // ... } saved.push(res.insertId); }); } } 

问题是,所有数据保存后(保存[]​​包含所有的ID)我需要传递这个数组到一个callback。 很明显,我不能马上这样做……我必须等待所有的疑问。

问题:我应该使用for循环还是recursion执行(下一个插入将被调用之前完成),我应该检查如果saved.length === dataLength,然后返回数组或有一些更好的方法怎么做?

以下是你如何使用async来完成的 :

 function saveData(data, cb) { async.mapSeries(data, function(queryData, callback) { db.query("INSERT INTO table VALUES (?, ?, ?)", queryData, function(err, res) { if (err) callback(err); else callback(null, res.insertId); }); }, cb); // cb will be passed `err, saved` }