얼음꽃의 일지

게시글, 댓글, 좋아요 형태 만들기 본문

항해 일지

게시글, 댓글, 좋아요 형태 만들기

얼음꽃 2022. 10. 11. 15:08
728x90

이 글은 Mongoose가 아닌 mySQL 로 작업을 했으므로 이 점 미리 알고 계시기 바랍니다.

 

밑에 링크는 ERD Diagram을 보기 쉽게 만들었습니다.

 

https://drawsql.app/teams/blog-2/diagrams/blog/embed

 

https://drawsql.app/teams/blog-2/diagrams/blog/embed

 

drawsql.app

 

요구사항

  1. 회원 가입 API
    • 닉네임은 최소 3자 이상, 알파벳 대소문자(a~z, A~Z), 숫자(0~9)로 구성하기
    • 비밀번호는 최소 4자 이상이며, 닉네임과 같은 값이 포함된 경우 회원가입에 실패로 만들기
    • 비밀번호 확인은 비밀번호와 정확하게 일치하기
    • 닉네임, 비밀번호, 비밀번호 확인을 request에서 전달받기
    • 데이터베이스에 존재하는 닉네임을 입력한 채 회원가입 버튼을 누른 경우 "중복된 닉네임입니다." 라는 에러메세지를 response에 포함하기
  2. 로그인 API
    • 닉네임, 비밀번호를 request에서 전달받기
    • 로그인 버튼을 누른 경우 닉네임과 비밀번호가 데이터베이스에 등록됐는지 확인한 뒤, 하나라도 맞지 않는 정보가 있다면 "닉네임 또는 패스워드를 확인해주세요."라는 에러 메세지를 response에 포함하기
  3. 로그인 검사
    • 아래 API를 제외하고 모두 로그인 토큰을 전달한 경우만 정상 response를 전달받을 수 있도록 하기
      • 회원가입 API
      • 로그인 API
      • 게시글 목록 조회 API
      • 게시글 조회 API
      • 댓글 목록 조회 API
    • 로그인 토큰을 전달하지 않은 채로 로그인이 필요한 API를 호출한 경우 "로그인이 필요합니다." 라는 에러 메세지를 response에 포함하기
    • 로그인 토큰을 전달한 채로 로그인 API 또는 회원가입 API를 호출한 경우 "이미 로그인이 되어있습니다."라는 에러 메세지를 response에 포함하기
  4. 댓글 목록 조회 API
    • 로그인 토큰을 전달하지 않아도 댓글 목록 조회가 가능하도록 하기
    • 조회하는 게시글에 작성된 모든 댓글을 목록 형식으로 response에 포함하기
    • 제일 최근 작성된 댓글을 맨 위에 정렬하기
  5. 댓글 작성 API
    • 로그인 토큰을 전달했을 때에만 댓글 작성이 가능하도록 하기
    • 로그인 토큰을 전달하지 않은 채로 댓글 작성란을 누르면 "로그인이 필요한 기능입니다." 라는 에러 메세지를 response에 포함하기
    • 댓글 내용란을 비워둔 채 API를 호출하면 "댓글 내용을 입력해주세요" 라는 에러 메세지를 response에 포함하기
  6. 댓글 수정 API
    • 로그인 토큰에 해당하는 사용자가 작성한 댓글만 수정 가능하도록 하기
    • API를 호출한 경우 기존 댓글의 내용을 새로 입력한 댓글 내용으로 바꾸기
  7. 댓글 삭제 API
    • 로그인 토큰에 해당하는 사용자가 작성한 댓글만 삭제 가능하도록 하기
  8. 내 블로그 글에 좋아요 기능 달기
    • 로그인 토큰을 전달했을 때에만 좋아요 할 수 있게 하기
    • 로그인 토큰에 해당하는 사용자가 좋아요 한 글에 한해서, 좋아요 취소 할 수 있게 하기
    • 게시글 목록 조회시 글의 좋아요 갯수도 같이 표출하기
  9. 좋아요 게시글 조회 API
    • 로그인 토큰을 전달했을 때에만 좋아요 게시글 조회할 수 있게 하기
    • 로그인 토큰에 해당하는 사용자가 좋아요 한 글에 한해서, 조회할 수 있게 하기
    • 제일 좋아요가 많은 게시글을 맨 위에 정렬하기

파일의 형태

파일의 형태

-> config, middleware, models는 sql 코드를 이용해서 표를 만들면 자동생성

-> npm i sequelize myslq2 -S , npm i sequelize-cli D, npx sequelize init     ( 모듈 설치 및 sequelize 사용 준비 )

-> npx sequelize db:create     ( 데이터베이스 생성 )

-> npx sequelize model:generate --name 이름 --atrributes 들어갈 속성:타입 ( 이 부분은 잘 파악해서 작성 )

-> config 파일은 aws혹은 사용하고자 하는 host, password 등을 잘 확인해서 넣어야합니다

-> mongoose에서는 schemas라는 파일의 형태를 사용했는데 sql에서는 mirgration과 models를 같이 사용합니다.

쉽게 생각하면 models가 뼈대 migration이 CRUD를 도와주는 역할이라고 보시면 됩니다.

 

-> sequelize 사용시 기본 문벙이랑 다르기 때문에 공식 문서 사이트를 남겨두겠습니다.

https://sequelize.org/docs/v6/

 

Sequelize v6 | Sequelize

npm version

sequelize.org

 

이 문제를 푸실때, 미리 어떻게 돌아가고, 어떤 부분에서 어떤걸 가져와서 하면 풀리겠다라는 생각을 먼저 하고 해보셨으면 합니다. 깃허브 링크를 올려드리겠지만, 저도 이걸 mongoose로도 만들고 sql로 만들면서 많은 시행착오를 거쳐서 만들게 되었습니다. 

 

https://github.com/talli0505/node.js_blog

 

GitHub - talli0505/node.js_blog

Contribute to talli0505/node.js_blog development by creating an account on GitHub.

github.com

 

728x90