일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Django
- typescript
- 장고초기세팅
- docker
- 프로미스
- node
- westagram
- wecode
- javascript
- bcrypt
- TypeError: this.boardRepository.createBoard is not a function
- 실행 컨텍스트
- CORS
- pm2
- Jest
- async/await
- crud2
- 호이스팅
- 노드
- 트랜잭션
- 스코프
- rebase
- on_delete
- status code
- OSI7계층
- django westagram
- 자바스크립트
- nodeJS
- JWT
- manytomanyfield
- Today
- Total
될때까지
((과제1)) 프리온보딩 DAY 3 본문
지난 포스팅에 이어서 작성합니다 =>프리온보딩 DAY2
화,수,목 3일중에 2틀을 기능 하나에 다썼다 ㅠ_ㅠ 나.. 이거 할수있겠지..?.???
# 특정 회원의 측정 기록들(목록) 가져오기
유저가 몸무게를 측정하면, '측정 기록 테이블'에 측정 날짜와 함께 데이터가 생성된다.
해당 측정 기록 ID를 외래키로 연결해서 손목 가동성/어깨 굴곡/어깨 신전/보행/호흡의 데이터 값이 '측정 데이터 테이블'에 생성된다.
[특정 회원에 대한 측정 기록 가져오는 기능]을 구현하는데 데이터를 어떻게 보내야 깔끔할까를 고민했고,
아래와 같이 1개의 측정 데이터 타입, 데이터 값을 객체로 만들어서 배열로 만들기로 정했다.
{
"id": 2,
"name": "Leecoder",
"height": "161.0",
"weight": "52.1",
"measurement_data": [
{
"data": 160,
"data_type_id": 2,
"data_type_name": "shoulder flexion"
},
{
"data": -52,
"data_type_id": 3,
"data_type_name": "shoulder extension"
}
]
}
데이터를 위처럼 가져오기 위해 총 4개의 테이블을 JOIN으로 연결했고, 아래 기능을 사용해 구현했다.
- JSON_ARRAYAGG : aggregation(집합)의 결과물을 JSON 배열로 만든다.
- JSON_OBJECT : 키:값 쌍을 사용해 JSON 객체를 생성한다.
SQL문을 어떻게 작성하냐에 따라 데이터가 요리조리 변해서 나오는 게 재밌네 😍
# 정규식
프로젝트 하면서 한두번은 꼭 사용하게 되는 정규표현식
작성한 표현식을 테스트 할 수 있어서 유용한 사이트 링크 첨부 => regex101
# 포스트맨으로 API Docs 만들기
위코드에서는 API Docs를 노션페이지에 수기로 작성했었다.
이번 원티드 프리온보딩에서는 위코드가 아닌 다른 부트캠프 분들과 팀 프로젝트를 진행하게 됐는데,
포스트맨으로도 API Docs를 만들 수 있다고 알려주셨다!!
DB diagram으로도 기본 SQL 뼈대문 작성도 가능했다지 ^_^
우물안의 위코더야 나아가라 한 걸음 앞으로
참고 사이트 => 포스트맨으로 API Docs
# conflict 해결법
팀 프로젝트를 하면서 오랜만에 컨플릭트를 만났다.
해결하는 법을 잊지 않도록 다시 정리해두고 넘어갑니당
git checkout main
git pull origin main
git checkout 컨플릭트발생한브랜치
git merge main // 그러면 충돌 발생
// 충돌 해결 후
git add .
git commit -m "커밋메세지 작성"
git push origin 브랜치명
# Number vs parseInt
const year = '2022년 10월 6일'
console.log(Number(year)) // NaN
console.log(parseInt(year)) // 2022
const decimal = '123.123'
console.log(parseInt(decimal)) // 123
console.log(parseFloat(decimal)) // 123.123
Number는 문자열 전체를 숫자로 변환하려 하기 때문에 NaN, falsy한 값을 반환한다.
parseInt는 숫자만 인식해서 반환하며 첫글자가 문자인 경우에는 NaN을 반환한다.
팀원분이 Number를 사용해서 요청 url에 숫자(ex /3)가 아닌 문자열(ex /abcd)이 들어온 경우에 대한 에러처리를 하셨다.
위와 같은 결과값 때문에 해당 코드가 제대로 작동하는 것이였군 👍
참고 사이트 => number vs parseint
# 프로젝트 마무리
프리온보딩 일정 이렇게 빡센지 몰랐는데 너무 너무 빡세다. 익숙하지 않은 노드로 진행한 1차 팀 프로젝트라서 그런거겠지?
맡은 기능을 구현하기 위해서 자바스크립트 개념도 부족하고 SQL문도 찾아봐야하고 모르는 게 너무 많았다.
그래서 스트레스 때문에 4시에 취침하고 6시에 일어나서 토마려운 걸 참아가며 작성한 내 주옥같은 코드 ㅋㅋㅋㅋㅋ.
내가 맡은 기능 구현이 제일 어려운 부분이였다면 좋겠다. ^^...
1차 프로젝트를 마무리하면서 느낀점은 이제까지 해왔던 클론 코딩과는 급이 달라서 너무 재밌다.
데이터 모델링부터 모든 걸 우리끼리 생각해서 의견을 조율해 만들어나가는 재미가 훨씬 크구나 느꼈다.
코드를 무작정 치기보다, 맡은 기능을 구현하기 위해 어떤 데이터가 필요하고 어떤 로직이 요구되는 지 밑그림을 그린 다음에 시작해야겠다고 느꼈다. 안그랬더니 코드를 뒤엎고 너무 힘들었다...!
위코드에서는 하다가 모르겠으면 멘토님께 여쭤보고, 옆자리 짝궁한테 물어보며 도움을 받았는데 이번에는 혼자 계속 고민하고 작성하고 지우고 다시 작성하고 또 지우고.. 혼자서 고통받는 시간이 커서 힘들었다. 하지만 고통이 길었던 만큼 해결했을 때의 희열이 너무 컸다.
힘들긴 해도 프리온보딩 하길 잘했다.
이제 바로 2차 프로젝트 하러 가보자....
'프로젝트 > 프리온보딩' 카테고리의 다른 글
((과제2)) 프리온보딩 DAY 2 (0) | 2022.10.09 |
---|---|
((과제2)) 프리온보딩 DAY 1 (0) | 2022.10.08 |
((과제1)) 프리온보딩 DAY 2 (1) | 2022.10.05 |
((과제1)) 프리온보딩 DAY 1 (0) | 2022.10.04 |
((TIL)) 프리온보딩 백엔드 사전스터디 : Node.js 7 (0) | 2022.09.30 |