[nodejs] 데이터베이스 연동을 위한 오류 처리 방법
Node.js 프로젝트에서 데이터베이스와 연동할 때 발생할 수 있는 오류를 처리하는 것은 매우 중요합니다. 이번 포스트에서는 Node.js에서 데이터베이스 연동 시 주로 발생하는 오류들과 해당 오류를 처리하는 방법에 대해 알아보겠습니다.
데이터베이스 연동 오류
오류 핸들링
Node.js에서 데이터베이스와 연결할 때 발생하는 오류는 다양합니다. 일반적으로는 연결 정보가 잘못되었을 때 발생하는 연결 오류가 있습니다. 이 경우, try/catch
구문을 사용하여 오류를 처리하고 적절한 메시지를 출력하거나 로깅하는 것이 좋습니다.
예시:
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'mydb'
});
connection.connect((err) => {
if (err) {
console.error('데이터베이스 연결 오류:', err.message);
return;
}
console.log('데이터베이스에 연결되었습니다.');
});
쿼리 실행 오류
오류 핸들링
쿼리 실행 시 문법 오류, 데이터 유효성 검사 오류 또는 결과가 없는 경우의 오류 등 다양한 상황에서 오류가 발생할 수 있습니다. 이때 try/catch
구문을 사용하여 쿼리 실행 오류를 캐치하고 적절히 처리하는 것이 중요합니다.
예시:
connection.query('SELECT * FROM non_existing_table', (err, results, fields) => {
if (err) {
console.error('쿼리 실행 오류:', err.message);
return;
}
console.log('쿼리 결과:', results);
});
트랜잭션 오류
오류 핸들링
트랜잭션을 사용하는 경우, 트랜잭션 관련 오류에 대한 처리도 중요합니다. 트랜잭션 내에서 발생하는 오류를 적절히 처리하여 데이터의 일관성을 유지하는 것이 필요합니다.
예시:
connection.beginTransaction((err) => {
if (err) {
console.error('트랜잭션 시작 오류:', err.message);
return;
}
connection.query('INSERT INTO table1 VALUES (1)', (err, results, fields) => {
if (err) {
console.error('INSERT 쿼리 실행 오류:', err.message);
connection.rollback(() => {
console.error('트랜잭션 롤백');
});
return;
}
connection.commit((err) => {
if (err) {
console.error('트랜잭션 커밋 오류:', err.message);
connection.rollback(() => {
console.error('트랜잭션 롤백');
});
return;
}
console.log('트랜잭션 성공적으로 완료됨');
});
});
});
참고 자료
- Node.js 공식 문서: https://nodejs.org/api/errors.html
- MDN Web Docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try…catch