【发布时间】:2016-05-16 05:03:00
【问题描述】:
我的 nodejs 项目目前使用node-mysql。
我有一个多级数据数组,我想插入到多个表中。交易是我为了实现目标而想到的。下面是我的代码大纲:
const mysql = require("mysql")
const pool = mysql.createPool({ // connectionLimit=10 by default
connectionLimit: 5, // 10 by default
host: 'somehost',
user: 'userblah',
password: 'passworblah',
database: 'dbblah'
})
pool.getConnection(function(err, dbConnection) {
dbConnection.beginTransaction(function(err1) {
if (err1) {
console.log(“Unable to begin the transaction”)
return
}
arrayElements.forEach(function(element) {
var insert1 = mysql.format(“INSERT INTO table1(…) VALUES (…)”, […])
dbConnection.query(insert1, function(error1, result1) {
if (error1) {
return dbConnection.rollback(function() {
console.log(“Insert failed”)
})
}
const lastID = result1.insertId
// A: more loops coming here to insert sub-data to more tables with lastID
// B: SHOULD I dbConnection.commit here???
})
})
}
}
我认为在B 上dbConnection.commit 为时过早(而forEach 正在进行中)?我应该怎么做才能确保一切都完成,然后commit?
【问题讨论】:
标签: node.js transactions commit node-mysql