# 개요
- 노드에서 데이터베이스 연동 후 CRUD 작업할 때 실행되는 쿼리, 실행 시간 등 콘솔로 출력하여 알고 싶음
더보기
- 리액트에서 노드 및 데이터베이스 연동은 아래 글 참고
# Node.js 연동
# DB 연동
# 코드
- db 접속 정보 설정하는 dbConfig.js에 로그 출력하는 코드 추가 (쿼리 로그 부분)
const { Pool } = require('pg');
// ## 쿼리 로그
const originalQuery = Pool.prototype.query;
// Pool의 query 메서드를 오버라이드하여 쿼리 실행 시간을 측정하고 로깅
Pool.prototype.query = function (queryText, values, callback) {
const start = Date.now(); // 현재 시간
// 기존의 query 메서드를 호출하여 쿼리를 실행하고 그 결과를 queryResult에 저장
const queryResult = originalQuery.apply(this, [queryText, values]);
// 콜백함수 제공된 경우
if (typeof callback === 'function') {
queryResult.then(res => {
const duration = Date.now() - start; // 쿼리 실행 시간 계산
console.log('Executed query:', { queryText, duration, rows: res ? res.rows.length : 0 });
callback(null, res);
}).catch(err => {
callback(err, null);
});
} else {
queryResult.then(res => {
const duration = Date.now() - start; // 쿼리 실행 시간 계산
console.log('Executed query:', { queryText, duration, rows: res ? res.rows.length : 0 });
}).catch(err => {
console.error('Error executing query:', err);
});
}
return queryResult;
};
// 쿼리 로그 ##
const pool = new Pool({
user: 'postgres',
host: 'localhost',
database: 'postgres',
password: '비밀번호',
port: 5432, // PostgreSQL 기본 포트
});
pool.connect(err => {
if(err) console.log(err);
else console.log('DB 접속 성공');
});
module.exports = pool;
# 결과
- 실행 쿼리, 시간, 완료 열 개수 등의 정보를 로그로 확인 가능
'Framework > Node.js' 카테고리의 다른 글
[Node.js] Windows - OpenSSL 설치부터 Node에 HTTPS 적용 (0) | 2024.05.22 |
---|---|
[Node.js] 쿼리문 실행 시 트랜잭션 걸기 #BEGIN #COMMIT #ROLLBACK (1) | 2024.05.10 |