[MySQL] query()에 async/await 사용하기

박기영·2023년 6월 22일
1

DB

목록 보기
2/2

팀 프로젝트를 진행하면서 DB로 MySQL이 선택되었다.
평소 mongoDB만 사용했던터라 쿼리문을 작성한다는 것이 낫설었지만, 어떻게든 해냈다.
문제는 비동기 처리를 할 때 발생했다. async/await가 먹히지 않는 것이었다..!

mysql 라이브러리

필자는 MySQL을 다루기 위해서 mysql이라는 라이브러리를 사용했다.
그러나..!
mysql 라이브러리는 쿼리문에 async/await를 사용할 수 없었다.

mysql2 라이브러리

그래서 서칭을 해본 결과, mysql2 라이브러리를 사용하라는 말들이 많았다.
이 라이브러리는 async/await를 지원한다!

query()와 async/await 사용하기

쿼리문을 실행시킬 때는 query()를 사용한다.
여기에 async/await를 적용시키려면 promise()를 추가로 사용하면 된다!

const searchUserQuery = `SELECT * FROM members WHERE email = ?`;

try {
  const [userData] = (await con
    .promise()
    .query(searchUserQuery, email)) as RowDataPacket[];

  if (userData.length === 0) {
    return res.status(500).json({ message: '등록된 회원이 아닙니다.' });
  }
} catch (err) {
  res.status(500).json({ message: '유저 조회 중 에러가 발생했습니다.' });

  throw new Error(`Error searching member: ${err}`);
}

필자의 경우 try/catchasync/await를 함께 사용했다.

참고 자료

anhye0n님 블로그
riverblue님 블로그

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글