<aside> <img src="/icons/list_gray.svg" alt="/icons/list_gray.svg" width="40px" /> 목차
</aside>
<aside> 💡 스터디장께서는 대표로 매 주차 스터디 인증샷을 남겨주세요! 사진을 저장하여 이미지 업로드할 수도 있고, 복사 & 붙여넣기를 통해 업로드할 수도 있습니다.
</aside>
Express 프로젝트에서 SQL을 직접 사용하던 부분을 ORM을 이용하도록 변경 및 리팩토링할 예정입니다.
지난 주에 함께 개발했던 Repository, 그리고 미션에서 직접 개발했던 Repository들이 기억나시나요?
export const getUserPreferencesByUserId = async (userId) => {
const conn = await pool.getConnection();
try {
const [preferences] = await pool.query(
"SELECT ufc.uf_category_id, ufc.f_category_id, ufc.user_id, fcl.f_category_name " +
"FROM user_favor_category ufc JOIN food_category_list fcl on ufc.f_category_id = fcl.f_category_id " +
"WHERE ufc.user_id = ? ORDER BY ufc.f_category_id ASC;",
userId
);
return preferences;
} catch (err) {
throw new Error(
`오류가 발생했어요. 요청 파라미터를 확인해주세요. (${err})`
);
} finally {
conn.release();
}
};
다시 봐도 그렇게 읽기 쉬운 코드는 아닌 것 같습니다 🥲 SQL 문을 조금이라도 잘못 작성하면 실패하게 되어 원인을 찾기 어려워지고, 쿼리가 길어질수록 수정하기 무서울 것 같지 않나요?
<aside> 💡 ORM에 대해 알아보고 사용해볼게요!
</aside>
Chapter 6. ORM 사용해보기 - ORM 사용해보기