개발 노트

MQTT 메세지 받아서 DB에 저장 - 프로그램 시작 시 DB가 연결되지 않은 경우 본문

Node

MQTT 메세지 받아서 DB에 저장 - 프로그램 시작 시 DB가 연결되지 않은 경우

알 수 없는 사용자 2023. 9. 25. 10:45

DB가 연결되었는지 체크해주는 함수

const check = async () => {
    return await new Promise((resolve, reject) => {
        console.log(111);
        dbPool.getConnection((err, connection) => {
            console.log(222);
            if (connection === undefined) {
                console.log(333);
                // return false;
                // reject(false);
                reject(false);
            }
            else {
                console.log(444);
                // return connection;
                resolve(connection);
            }
        })
    })
}

 

본 코드로 들어가기 전에 테스트용으로 만든 test함수

const test = () => {
    return new Promise((resolve, reject) => {
        console.log(0);
        dbPool.getConnection((err, connection) => {
            console.log(12345)
            let conn = connection;
            if (connection === undefined) {
                console.log('undefined!!');

                let interval = setInterval(async () => {
                    let new_connection = await check()

                    console.log(456456456);

                    console.log('new_connetcion: ', new_connection);
                    if (new_connection === undefined) {
                        console.log('setinterval');
                        num += 1;
                        console.log('num = ', num);
                        conn = new_connection;
                        clearInterval(interval);
                        console.log(4444444)
                        test();
                    }
                    else {
                        console.log('else문 시작')
                        clearInterval(interval);
                        test();
                        console.log('else문 끝')
                    }
                }, 3000);
                console.log('connection: ', connection);


                // reject();
            }
            console.log(66666666);

            if (connection !== undefined) {
                console.log(98765)
                connection.on('error', function (err) {
                    console.log(55555);
                    return;
                });

                // 이곳에서 쿼리를 실행하거나 다른 작업을 수행
                connection.query('SELECT * FROM dw_water2', (queryErr, results) => {
                    if (queryErr) {
                        console.error('쿼리 실행 중 오류:', queryErr);
                        reject();
                    } else {
                        console.log('results!!!!!!!!!!!!!!!!: ', JSON.stringify(results));
                        resolve();
                    }

                    connection.release(); // 연결을 다시 풀에 반환
                });
            };

            if (err) {
                console.error('연결 획득 중 오류111111111111:', err);
            }
        });
        console.log(99999999)
    })
}

 

출력

 

미해결

: 연결체크를 해주는 check함수가 반복실행 되지 않고 멈춘다.

'Node' 카테고리의 다른 글

NodeJS 크롤링 시작하기  (0) 2023.11.08
Node js 시작하기  (0) 2023.11.08
MQTT 메세지 받아서 DB에 저장  (0) 2023.09.25
mySQL에서 connection pool 사용  (0) 2023.09.21
nodejs - winston 모듈  (0) 2023.09.20