본문 바로가기
Back-End Frameworks/Node.js

16)Nodejs_MySQL(5)_쿼리 수행 (본게임 시작.)_기본형태. .?

by Downy_J 2023. 7. 23.
728x90
반응형
SMALL

이제 실제 node 개발을 할때

뭔 폴더 만들고

어디에 뭐가 들어가고

그런걸. .실전 적인걸. .

배우고 그렇다

아마 기본형에 가깝지 않을까..


유저 정보 등록해서
유저 등록한 댓글 가져오기
안에 views 폴더를 만들고
에러를 보여줄 error.html 페이지와
본 페이지가 될 sequelize.html을 만들자

CSS 파일을 넣어줄 public 파일도 만들자
(왜 public임?
 
)


views/sequelize.html

Nunjucks를 이용 할..거다

(이거 건너뛰었는디..)

책에 있는거 고대로 만듦.

(코드가 중한게 아녀 어떻게 했나 방법이 중한거여)

그리고 별거 아니지만 약간 수정 했다


라우터 폴더 하나 만들어 이제 GET, POST, PUT, DELETE 요청같은거 주고 받을 수 있게

index.js | users.js | comments.js 의 JS 파일을 만들어 주자

 

 

먼저. . 들어가기 전

라우터 이거 뭐 어떻게 뭐 였지? 싶으면

https://whaledowny.tistory.com/42

 

11)Nodejs_ Express Web Server_(2) Router, req res ,Template Engine(일단 보류. .ㅎㅎ)

Router 라우터 만들어 분기 작업을 할때 요청 메서드별, 주소별 분기 처리를 if문으로 좀 지저분하게 만들었었는데 확장하기도 어려웠다. 이러한걸 깔끔히 관리 하기 위해 express를 사용한다 app.get

whaledowny.tistory.com

routes/index.js
가장 기본 페이지인 GET / 으로 접속 했을때의 라우터.

User.findAll() 로 모든 사용자 찾은 다음
sequelize.html을 렌더링 할 때 결과값인 users를 넣는다

Sequelize는 Promis를 기본적으로 들어있음
async/await과 try/catch 문을 사용해 각각
조회 성공과 실패의 보를 얻을 수 있음

이렇게 미리 DB에서 데이터를 조회한 다음

템플릿 렌더링에 쓸 수 있다


다음은 users.js다

routes/users.js
 

GET /usersPOST /users 주소로
요청 들어왔을때의 라우터

각각 사용자를 조회하는 요청, 사용자를 등록하는 요청 이다

앞에 GET / 에서도 유저 데이터를 조회 했으나,
GET /users에서는 데이터를 JSON 형식으로 변환 한다는 차이가 있다.


GET /user/:id/comments 라우터는 findAll 메서드에 옵션으로
include가 있다

include 옵션에선 model 속성에는 User 모델을, where 속성에는 :id로 받은 아이디 값을 가져올 수 있다
(req.params.id값을 가져올수 있다.
GET /users/1/comments 라면 사용자 ;id가 1인 댓글을 불러온다.)

그렇게 조회된 댓글 객체는 include로 넣어준 유저 정보도 들어있으므로 작성자의 이름과 나이등도 조회 할 수있다


이제 comments다

routes/comment.js

댓글 관련해서 CRUD 작업 하는 라우터

POST /comments,
PATCH /comments/:id,
DELETE /comments/:id 를 등록 했음

POST /comments : 댓글 생성 라우터
commenter 속성에 사용자 id 넣어 사용자와 댓글을 연결한다

PATCH /comments/:id 와 DELETE /comments/:id
각각 댓글을 수정과 삭제를 하는 라우터

수정엔 update 쓰고 삭제엔 destory 메서드를 씀.


그럼 이제.. 서버를 가동.. 해보기 전에

지금까지 만든걸 app.js에 연결 해야 함.

app.js
불러와 담고
담아서 주소 연결!
저러면 GET / 에 /user

서버를 가동 해 보자구~


화면 계정 등록 & 댓글 등록 & 댓글 수

해당 row열을 누를 시 그에 맞는 댓글도 불러 오는데

이건. . . .

저기서 이제 동작 하는건데..

어떻게 작동 하는건지 이건. . 좀 신기하네

 

Node 기본기 탄탄히 다진 다음

개발을 실제 해보면서

저런걸 구현 해야 하는건데....

 

언제 저런것도 어떻게 구현 하는지

코드적으로 정리를 해야 겠음. 

 

728x90