Node.js

Node.JS에서 MySQL Select data return 하기

하늘을난모기 2019. 6. 8. 17:24

MySQL 연결과 단순하게 데이터를 조회하는 것은 쉽게 될 것이다.
다만, Select의 결과를 return 시켜 사용하고 싶을 때 문제가 발생한다.

query = async () => {
    return mysql.query("select * from table", (err, result) => {
        return result;
    }
}

될 것 같은 코드임에도 불구하고, return 시키는 값은 전혀 다른 결과값을 가져온다.
mysql.query() 함수가 콜백 지옥에 빠지기 때문인데..
이를 해결하는 방법으로 코드를 사용할 곳에서 callback 함수를 만들어야 한다.

query = async (callback) => {
    return mysql.query("select * from table", (err, result) => {
        if (err) {
            callback(err);
        }
        callback(null, result);
    }
}

이렇게 함수를 구성하고,

selectMethod = () => {
    query((err, result) => {
        console.log(result);
    });
}

이렇게 사용한다.

typescript를 도입한다면,

query = async (callback: (err: any, result?: any) => void) => {
    return mysql.query("select * from table", (err, result) => {
        if (err) {
            callback(err);
        }
        callback(null, result);
    }
}
selectMethod = () => {
    query((err: any, result: any) => {
        console.log(result);
    });
}