Wecode - Project 2 (부트캠프)/Project 2 과정

project2- 2일차(3): layered pattern

JBS 12 2023. 9. 19. 20:52

팀원들과 layered pattern을 하면서 어려웠던 점을 공유하며, 다시 복기 했다. 

 

공통적으로 어려웠던 점

- 어떤 걸 app.js에 남겨야 하는지 어떤걸 넘겨야 하는지 (연결 부분)

- import, export연결 (우리는 import 안하고,require로 )


 middlewear

- 에러 담당 middlewear로 가기에

- error를 다 선언 하지 않아도 됨

- error하는 함수 자체를 다 빼서 하는거 

 

 

utility안에 함수 

middlewear는 next 를 갖고 있는 함수 

 

일반 middlewear는 res,req,next 3개 받는데, 

 

error 전용 middlewear는 

req가 아니라 err, res req, next 4개

 

그래서 모든 router에 error처리 없이 넘기면됨


next ( )

next를 쓰면, 그 함수를 실행해주고, next뒤의 함수를 실행시킴

next는 다른 파일에 선언되어있음-> 그래서, next가 실행시키는 함수가 뭔지를 보려면, 

 

다른 파일에 next가 어딨는지를 봐야 한다. 

1. 어느 파일에, next가 있는지/ 그 next가 뭘르 부르는지 

2. 아니면 ctrl + F로 찾기하던가

3. 보통은 함수를, command+ click 하면 그 함수로 보내줌

 

 

try( 안의 next()가 있어야, 그다음줄로 넘어감. 한줄씩)

근데 만약 에러를 부르면, try안의 next가 아니라, 밑의 catch 의 next()를 가져감

 

next() 뒤에 보통 함수가 온다. 


분리 작업 순서 및 흐름

layered pattern 익숙해지고 나면, 처음부터 나눠서 하는 게 좋은데, (router- controller- service- model)

 

이미 작업을 app.js에서 작업을 한 다음, 분리할 거면 Dao부터 하는게 좋음

(역순으로) 


1.dao (database 관련)

 

app.js에서 db를 갔다 오는게 뭘 가야할지 파악 

다 빼기 

 

날것으로 붙이고 

 

1-1. const로 함수 이름 넣어놓고

 

매개변수는 나중에 

 

 

2. dato 안에서 datasource 도 빼야 함

 

그래서데이터소스 불러오는 거는 다 빼기

 

빼고 나서 색 안 들어오면 필요없는거 

 

 

 

{ }dls dldbsms --> rorcp w                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 함수를 api로 줄때에도 타고 타고 ㄷ르어가서 해야 함

 

주소가 뭘까? 할때 --> 하위경로이니, 상위폴더로 가서 실행시킨 후 가야하니, 

api에 앞에 붙여야 함. 

 

현재.니까

./ (동일선사잉니까) 

 

 

내보내기 module로 

datasource 내보내겟다

 

그럼 dao 가서 reuqire로 가져오겟다 

 

연결됏느닞 확인하려면 클리갷야만

 

 


index.js는 폴더마다 있음 

그 안에서, 파일이 아닌, 폴더명만 가져옴

알아서 다 불러줌

 

 

이렇게 userController파일로 하나씩 하는 거보다,

 

파일을 폴더로 묶어줘서, 보내줌

일반 node modules에서는 일반 폴더로는 불러올 수 없음. 그래서 index.js 사용해야 함

node modules에 index.js가 있어서, 

index.js로 일반폴더를 package.json처럼 패키지화 한 것.