팀 프로젝트를 진행하면서 DB로
MySQL
이 선택되었다.
평소mongoDB
만 사용했던터라 쿼리문을 작성한다는 것이 낫설었지만, 어떻게든 해냈다.
문제는 비동기 처리를 할 때 발생했다.async/await
가 먹히지 않는 것이었다..!
필자는 MySQL
을 다루기 위해서 mysql
이라는 라이브러리를 사용했다.
그러나..!
mysql
라이브러리는 쿼리문에 async/await
를 사용할 수 없었다.
그래서 서칭을 해본 결과, mysql2
라이브러리를 사용하라는 말들이 많았다.
이 라이브러리는 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/catch
와 async/await
를 함께 사용했다.