오늘 배운 내용 📚
- 장바구니 테이블 생성부터 API 구현까지
추가 정리 내용 📑
- 제약조건 이름 설정 및 INDEX 설정
이전에 테이블 미리 생성을 해보면서 겪었던 제약조건 이름 설정과 인덱스 설정에 대해서 정리를 해주셨는데 추측했던 내용이 맞았어서 좋았던 것도 있지만 언제 INDEX를 사용하는지 그 부분이 해결이 되지 않아 정리를 더 해야겠다는 생각을 했습니다. 그리고 요즘 SQL을 많이 작성하면서 느낀 건데 확실히 내가 작성한 SQL를 보면서 공부가 되는 것 같습니다. 이전에 작성한 코드를 토대로 추가적으로 표현하고 싶은 컬럼이나 어떻게 구현을 할지 생각을 하게 되는데 그걸 바로 controller에 작성하는 게 아니라 CLI나 workbench를 통해서 내가 표현하고 싶은 테이블이 제대로 나오는지 확인을 한 다음에 controller에 작성하면 SQL로 발생할만한 상황을 만들지 않기 때문에 오류를 덜 만나게 되는 것 같습니다.
마지막으로 오늘은 지난주에 수업을 듣고 짠 코드를 페어끼리 코드리뷰 하는 시간을 가졌는데, 저와 페어였던 분의 코드를 보고 저도 많은걸 느낀 것 같습니다. 저는 대게 controller에서 코드를 작성을 하려 하는 반면에 페어였던 분은 최대한 function으로 분리를 하여 그걸 불러다 쓰는 형식이었습니다. 만약에 해당 코드를 재사용하지 않더라도 확장성을 고려하여 function을 만들어서 사용해 보도록 해야겠다 싶었고, 저와 달랐던 점을 정리하자면 저는 리스트에 정렬기능을 추가했다면 페어분은 비밀번호 초기화 요청 시에 이메일로 인증을 하는 시스템을 도입하셨는데 저도 이 부분이 탐이 나서 한번 구현해 보면 좋을 것 같다 싶었습니다. 나중에 시간이 남는다면 이 기능을 추가해보고자 합니다.
❓오늘의 질문
releaseConnection()은 어떻게 사용하는것인가?
const pool = createPool({
host : 경로,
user : 유저,
password : 비밀번호,
database : 스키마,
connectionLimit: 10
})
const [result] = await pool.query(sql, values)
if(result) return res.send("성공")
else return res.send("실패")
pool.releaseConnection()
처음 release를 접한건 전 회사에서 PHP를 통해 mysql을 이용할 때였는데요 이때 막연하게 데이터베이스에 접근을 하면 release를 해줘야 한다는 이야기를 듣고 연결하고 작업이 끝나면 release를 했던 경험이 있었습니다. 때문에 node에서 작업을 할 때도 finally에 releaseConnection()을 해주었는데요.
이 질문이 나오게 된 이유는 같은 조에 속한 조원이 releaseConnection()안에 매개변수로 connection을 넣어주어야 하는 거 아니냐 에서 시작되었습니다. 찾아보니 실제로 매개변수가 들어갈 수 있게 되어있었는데요.
지금 사용하는 모듈인 mysql2에서만 그런건지 모르겠는데 pool.query를 작성을 하면 release를 하지 않아도 자동으로 사용된다는 글을 발견했습니다.
그래서 이전에는 코드는 어떻게 작성을 했지 싶어 작업한 코드들을 찾아보았는데
pool.getConnection((err, conn)=>{
conn.query(sql, values,(err,result)=>{
...
})
release(conn)
})
하지만 pool에 바로 pool.query를 작성하게되면 위 내용을 자동으로 진행해 주어 조금 더 간결하게 코드를 짤 수 있는 것을 알게 되었습니다.
release 안에 conn을 넣어야하는거 아니냐는 질문을 시작으로 찾아본 결과물은 결국 우리가 작업한 방식은 자동적으로 release가 들어가 있어서 따로 release를 하지 않아도 되는 결론이 나왔지만 release(conn)이 맞는지 conn.release()가 맞는 건지 둘 다 맞는 건지 못 찾아서 이 부분이 조금 아쉬웠습니다.
참고 블로그 : 이준규님 velog. [Nodejs] mysql vs mysql2 , Connection Pool
'프로그래머스 데브코스 > TIL' 카테고리의 다른 글
[Day 42] 웹 풀사이클 데브코스 TIL (0) | 2024.01.10 |
---|---|
[Day 41] 웹 풀사이클 데브코스 TIL (0) | 2024.01.09 |
[Day 39] 웹 풀사이클 데브코스 TIL (0) | 2024.01.05 |
[Day 38] 웹 풀사이클 데브코스 TIL (0) | 2024.01.05 |
[Day 37] 웹 풀사이클 데브코스 TIL (0) | 2024.01.03 |