Node.js,多个MySQL插入

我想在我的服务器客户端应用程序的specefic ordner中做多个MySQL插入。

var con = createDatabaseConnection(); function createDatabaseConnection() { return (mysql.createConnection({ host: // hostIp, user: // user, password: //pw, database: //databasename }); } function writeFoo(fooObject) { var sql = // prepare sql insert for fooObject; con.query(sql, function (err) { // ? Is inserted data ready to use ? } }); function writeBar(barObject) { var sql = // prepare sql insert for barObject; con.query(sql, function (err) { // ? Is inserted data ready to use ? }); }); // Both arrays containing an unpredictable amount of objects var fooArray = []; var barArray = []; 

关键的一点是,我必须绝对确定fooArray中的fooObject是在fooArray插入之前插入的。 因为在writeBar()中使用的SQL INSERT语句包含一个SELECT语句,它必须find插入在writeFoo()的数据。 在任何时候,事件都可能发生(客户端发送需要插入的数据),那也需要这个function。

真实情况有点复杂,但我认为这是目前的主要问题。

你可以链接他们的承诺 ,这样你会确保每个电话是为了,例如:

 var con; function createDatabaseConnection() { return new Promise(function (resolve, reject) { mysql.createConnection({ host: hostIp, user: user, password: pw, database: databasename }, function(err, res){ if(err) reject(err); else resolve(res); }); }); } function writeFoo(fooObject) { let sql = fooObject; return new Promise(function (resolve, reject) { con.query(sql, function (err, res) { if(err) reject(err); else resolve(res); }); }); } function writeBar(barObject) { let sql = barObject; return new Promise(function (resolve, reject) { con.query(sql, function (err, res) { if(err) reject(err); else resolve(res); }); }); } createDatabaseConnection() .catch(function (error) { // connection failed // log info console.error(error); process.exit(0); }) .then(function (res) { con = res; return writeFoo(fooObject); }) .catch(function (error) { // writeFoo(fooObject) failed // log info console.error(error); process.exit(0); }) .then(function () { return writeBar(barObject); }) .catch(function (error) { // writeBar(barObject) failed // log info console.error(error); process.exit(0); }); 

不要说ORM的总是最好的,但http://docs.sequelizejs.com/与节点运行良好。 那里有一个批量插入选项。