2017-12-07 5 views
0

안녕 모두,Node.js를 MySQL의 연결과 거래

내가, 내 모든 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(); 
      }); 
       }); 
     }); 

답변

1

이미 발표 오류에게 연결을 제공합니다. 쿼리에 오류가 발생하는 즉시 연결을 롤백하고 해제해야하며 다른 조건으로 롤백하기로 결정하십시오. 현재 코드에서 트랜잭션을 커밋하는 동안 오류가 발생하는 경우에만 롤백 중입니다.

pool.getConnection(function(err, connection) { 
    connection.beginTransaction(function(err) { 
     if (err) { //Transaction Error (Rollback and release connection) 
      connection.rollback(function() { 
       connection.release(); 
       reject(err); 
      }); 
     } 
     connection.query('INSERT INTO X SET ?', [X], (error, results) { 
      if (err) {  //Why is this here? 
       reject(err); 
      } 
      if (error) { //Query Error (Rollback and release connection) 
       connection.rollback(function() { 
        connection.release(); 
        reject(err); 
       }); 
      } else if (results[0] !== 'undefined') { 
       resolve('X added sucessfully'); 
      } else { 
       reject(error); 
      } 
      connection.commit(function(commitErr) { 
       if (commitErr) { 
        connection.rollback(function() { 
         connection.release(); 
         reject(commitErr); 
        }); 
       } 
       connection.release(); 
      }); 
     }); 
    }); 
}); 
+0

감사합니다. 시도해 보겠습니다. – faradji