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);
});
}
'Node.js' 카테고리의 다른 글
node.js 한국 시간 구하기 (0) | 2018.06.19 |
---|---|
node.js에서 mp3 메타 데이터 한글 깨짐 현상 해결 방법. (0) | 2017.12.04 |