【发布时间】:2017-12-07 08:19:16
【问题描述】:
大家好,
我尝试在使用我的应用程序之前将所有 mysql 插入、更新等更改为事务,我之前已经发布的连接遇到了很多麻烦,为了解决它我开始使用 pool.query 来处理发布本身。
pool.query( 'INSERT INTO X SET ?', [ X ], ( error, results ) => {
if(err){
reject(err);
}
if ( error ) {
reject( error );
} else if ( results[ 0 ] !== 'undefined' ) {
resolve( 'X added sucessfully' );
} else {
reject( error );
}
} );
我试过用谷歌搜索它,但在任何地方都找不到它,即使在 Mysql 的文档中,当你进行事务时,我在代码中的哪个位置释放连接,或者更好的是,我可以使用 pool.query什么时候做交易?
以下代码有效,但有时会给出连接已释放错误
connection.beginTransaction( function ( err ) {
if ( err ) {
reject( err);
}
connection.query( 'INSERT INTO X SET ?', [ X ], ( error, results ) => {
if(err){
reject(err);
}
if ( error ) {
reject( error );
} else if ( results[ 0 ] !== 'undefined' ) {
resolve( 'X added sucessfully' );
} else {
reject( error );
}
connection.commit( function ( commitErr ) {
if ( commitErr ) {
connection.rollback( function () {
reject(commitErr);
} );
}
connection.release();
} );
} );
} );
【问题讨论】:
标签: javascript mysql node.js transactions