[javascript] Bluebird를 사용하여 데이터베이스 트랜잭션의 에러를 핸들링하는 방법을 알려주세요.
Bluebird는 JavaScript에서 프로미스를 지원하기 위한 라이브러리로, async/await 문법과 함께 사용하여 효율적인 에러 핸들링을 제공합니다.
const Promise = require('bluebird');
const db = require('database_library');
// 트랜잭션 시작
db.beginTransactionAsync()
.then(async connection => {
try {
// 여러 쿼리 실행
await connection.queryAsync('INSERT INTO table1 VALUES (1, "data1")');
await connection.queryAsync('UPDATE table2 SET column1 = "newdata" WHERE id = 1');
// 성공 시 커밋
await connection.commitAsync();
console.log('트랜잭션 성공적으로 완료');
} catch (error) {
// 에러 발생 시 롤백
await connection.rollbackAsync();
console.error('트랜잭션 중 에러 발생: ', error);
} finally {
connection.release();
}
})
.catch(err => {
console.error('트랜잭션 시작 중 에러 발생: ', err);
});
위 코드에서 beginTransactionAsync
, queryAsync
, commitAsync
, rollbackAsync
는 Bluebird의 프로미스화된 데이터베이스 API 호출을 나타냅니다. 트랜잭션 도중 발생하는 에러를 적절히 핸들링하여 롤백하거나 커밋하는 과정을 보여줍니다.
참고 문헌:
- Bluebird 공식 문서: https://bluebirdjs.com/docs/api-reference.html
이와 같이 Bluebird를 사용하면 데이터베이스 트랜잭션의 에러를 효율적으로 핸들링할 수 있습니다.