| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
| 31 |
- 위드굿즈
- 카카오뷰N잡
- 카카오뷰 성장
- 도서 원씽
- 책 원씽
- 카카오뷰 수익
- 원씽
- 이석증
- 위드굿즈 굿즈샵
- Git 팀 작업
- ppt 다이어그램
- 카카오뷰 탭이동
- Axios 라이브러리
- express.js 환경 셋팅
- 엑셀 기초 함수
- 카카오뷰 초보
- 성공에 대한 거짓말
- 성공비법
- 카뷰 수익 인증
- 실시간 통신
- 자기관리
- ppt 도형 색
- 30일 글쓰기
- git 협업하기
- 카카오뷰 온라인 수익화
- 카카오뷰 부업
- 엑셀 프린트하기
- 웹기초
- HTML
- CSS
- Today
- Total
김데이의 개발공부
[ TIL ] Day 29 - 팀 초급 프로젝트(실습) : 협업 셋팅(Git clone, 코드 작성 규칙 숙지) & 개별 API 작업 본문
[ TIL ] Day 29 - 팀 초급 프로젝트(실습) : 협업 셋팅(Git clone, 코드 작성 규칙 숙지) & 개별 API 작업
theday365 2025. 11. 6. 10:20🗓️ 수업 일자 : 2025.11.5
✨ 오늘의 수업 평가 : [ PROJECT ] 아직은 미완성, 내일이 기대돼! ⏭️🚀
팀 작업을 하면서 틈틈히 개인 프로젝트 멘토링 받은거 수정하느라
한번에 2개 프로젝트를 하다보니 체력이 부족ㅠㅠ
포스팅 써 놓고 최종 검토를 못해서 결국 업로드 날짜가 11월 6일이라는건 안비밀입니다 ㅋㅋㅋㅋ
개발도 결국 체력 싸움이구나 싶다~💪🏻
👩💻 [프로젝트] 오늘 작업 내용 💻
- 팀 프로젝트 기초 작업 : 협업 셋팅 (Git clone, branch setting, 코드 작성 규칙 숙지)
- 팀 프로젝트 작업 : 개별 API 작업
📝 오늘 배운 내용
- uuid() vs autoincrement()
- 유효성 검증 미들웨어 구성
- .gitatturibute란?
1. uuid() vs autoincrement()
uuid()
- 전세계 유일한 식별자
- DB에 의존하지 않고 APP(Prisma, nodeJS)에서 생성 가능
- 분산 시스템, 샤딩 구조(서버를 여러 개 사용), 외부 데이터 연동 작업에서 ID 충돌이 거의 제로에 가까움
- 현업에서는 특별한 경우( IP / 휴대폰 번호 로그인 처럼 일상 세계에서도 겹치지 않는 정도) 혹은 규모가 엄청 큰 경우에 사용
autoincrement()
- 새 row가 추가 될 때마다 자동으로 1씩 증가하는 정수 ID
- SQL 엔진이 직접 관리하여 단일 DB에서 간편하고 빠름
- 현업에서는 대부분의 id 셋팅에서 해당 방식을 주로 사용
- 축약으로 ai() 라고 쓰기도 함
장 단점 비교
| uuid() | autoincrement() | |
| 장점 | 서버 부하 줄임(클라이언트에서 미리 생성 가능) 보안성이 높음 DB 마이그레이선, DB 이전 시 충돌 적음 |
검색, 인덱싱 효율이 좋다 숫자 기반이라 읽고 관리하기 쉽다 |
| 단점 | 길이가 길다(36문자, 16바이트) 랜덤 정렬이라 인덱스 효율이 떨어짐 |
서버가 분산 될 경우 사용 불가함(숫자 중복 가능) 예측 가능한 ID여서 보안에 취약함 |
2. 유효성 검증 미들웨어 구성
- 기존 : superstruct 사용하여 비니지스 로직 안에서 유효성 검사 진행
- 변경 : 미들웨어를 만들고 그 안에서 검증을 진행. 값에 문제가 있다면 catch문을 통해 에러를 response로 전달
1. 기존 비지니스 로직(xx_controllers.js)에서 superstruct 관련 구문을 찾음

2. 신규 미들웨어 파일에 우선 import문을 동일하게 가져옴

3. 아래의 내용을 참고하여 신규 미들웨어를 작성 함
// 신규 등록 시 사용할 미들웨어
export function productCreateValidation(req, res, next) {
try {
// 비지니스로직에서 사용하던 유효성 검사 구문 그대로 사용
assert(req.body, CreateProduct);
// 검사 후 요청문이 실행 될 수 있도록 next(); 처리
next();
} catch (err) {
// 값이 없는 경우 결과로 보낼 에러코드와 관련 메세지
res.status(400).json({
message: 'Invalid Request body',
details: err.message,
});
}
}
// 내용 수정 시 사용할 미들웨어
export function productUpdateValidation(req, res, next) {
try {
assert(req.body, PatchProduct);
next();
} catch (err) {
res.status(400).json({
message: 'Invalid Request body',
details: err.message,
});
}
}
4. 작성을 완료 한 뒤, xx_route.js 파일에 해당 미들웨어들을 삽입.

5. 작업 후 요청 테스트 진행 ✨


3. .gitatturibute란?
기본 개념
- Git이 파일을 다루는 방식을 제어하는 설정 파일
- 줄바꿈 방식, 병합 전략, diff 표시 방식, 언어 감지 등을 제어 가능
- 협업 프로젝트에서 윈도우/맥 환경 차이로 생기는 줄바꿈 충돌 방지
사용 예제
# 기본 설정
* text=auto
# OS 줄바꿈 통일
*.js text eol=lf
*.jsx text eol=lf
*.json text eol=lf
# 바이너리
*.png binary
*.jpg binary
*.gif binary
# 병합 시 내 쪽 우선
package-lock.json merge=ours
📃 내일은 뭘 배울까 🤔
- 팀 프로젝트 작업 진행!
'코드잇 Node.js(BE) 부트 캠프 > TIL (Today I Learn) 📑' 카테고리의 다른 글
| [ TIL ] Day 31 - 팀 초급 프로젝트(실습) : 팀 API 작업 검토 & PR 보내기 (0) | 2025.11.07 |
|---|---|
| [ TIL ] Day 30 - 팀 초급 프로젝트(실습) : 협업 추가 셋팅(Git rebase) & 팀 API 작업 (0) | 2025.11.06 |
| [ TIL ] Day 28 - 팀 초급 프로젝트(실습) : 선정 한 프로젝트 스키마 정의 & 작업 영역 분배 & 기타 사항 정리 (1) | 2025.11.04 |
| [ TIL ] Day 27 - 실습 : 비동기 에러 래퍼 함수 / 미들웨어 적용 / 최종 배포 (0) | 2025.11.03 |
| [ TIL ] Day 25 ~ 26 - 실습 : 관계 모델 CRUD 작성 + Route 분리 / 유효성 검사 적용 (0) | 2025.10.31 |