으로 utils/dateFormatter.js 파일을 만들어주고 해당 내용을 넣어줬습니다.
이렇게 만들어진 DB Pool을 가져다 쓰기 위해서
// 여러 데이터베이스 커넥션 풀 생성
constpools= {
GAME_DB:createPool(databases.GAME_DB),
USER_DB:createPool(databases.USER_DB),
};
exportdefaultpools;
위와 같이 pools라는 객체를 만들어 GAME_DB에는 database의 GAME_DB로 풀을 만들어 넣어주고,
USER_DB에는 database의 USER_DB로 풀을 만들어 넣어줍니다.
이렇게 만든 DB가 정상 작동하는지 테스트 하기 위해
utils/db 폴더를 만들고 testConnection.js 파일을 만들어줍니다.
consttestDbConnection=async (pool, dbName) => {
try {
const [rows] =awaitpool.query('SELECT 1 + 1 AS solution');
console.log(`${dbName} 테스트 쿼리 결과:`, rows[0].solution);
} catch (error) {
console.error(`${dbName} 테스트 쿼리 실행 중 오류 발생:`, error);
}
};
위와 같은 함수와 내용을 작성해 1 + 1의 결과를 solution이라는 이름으로 사용할 수 있게 만들어주고, 배열 분해 할당으로 rows 만 가져와 console.log로 rows[0].solution를 출력해줍니다. 1 + 1이 rows의 첫 번째에 들어갈 것이기 때문에 rows[0]을 해준 것이고, AS solution으로 1 + 1을 solution이라 해줬기 때문에 rows[0].solution을 해줍니다. 만약, db query가 정상적으로 안 동작한다면 console.error로 error를 출력해줍니다.
consttestAllConnections=async (pools) => {
awaittestDbConnection(pools.GAME_DB, 'GAME_DB');
awaittestDbConnection(pools.USER_DB, 'USER_DB');
};
export { testDbConnection, testAllConnections };
그리고 testDbConnection 함수에 DB 2개인 GAME_DB와 USER_DB를 넣기 위해 위와 같이 함수를 만들어줍니다.
만약, 새로운 DB개 새로 생성된다면 동일한 형식으로 새로 만들어 DB의 정상 작동 유무를 테스트 할 수 있습니다.
DB의 동작 테스트는 서버가 처음 시동될 때 확인할 것이기 때문에,
init/index.js의 기존 initServer 함수
constinitServer=async () => {
try {
awaitloadGameAssets();
awaitloadProtos();
// 다음 작업
} catch (e) {
console.error(e);
process.exit(1); // 오류 발생 시 프로세스 종료
}
};
exportdefaultinitServer;
에서
constinitServer=async () => {
try {
awaitloadGameAssets();
awaitloadProtos();
awaittestAllConnections(pools);
// 다음 작업
} catch (e) {
console.error(e);
process.exit(1); // 오류 발생 시 프로세스 종료
}
};
exportdefaultinitServer;
으로 수정해줍니다.
서버를 동작 시켜 DB 동작 유무를 확인해보면
위와 같이 GAME_DB, USER_DB에서 1 + 1의 결과인 2가 나오는 것을 확인할 수 있습니다.