Tristy Project/node js

[node js] 스파르타 스터디 클럽

Tristy 2021. 4. 25. 22:31
 

WonDongGyun/SpartaStudyClub-1

당신의 학습 목표를 확실하게 관리해드립니다! (Typescript, NestJS, TypeORM, WebSocket) - WonDongGyun/SpartaStudyClub-1

github.com


 

  • 진행 날짜 - 2021.04.09 ~ 2021.04.22
  • 필수 포함 사항


 

 

 

🤩 사용한 패키지 및 CSS

  • Nest JS  => node.js의 웹 프레임워크 (써보니까 express보다 편하네요!)
  • TypeORM  => node.js에서 관계형 데이터베이스인 MySql을 사용해보고, TypeOrm으로 조작해 봅시다.
  • eslint    => node.js에서 팀 단위 협업 시, 문법 검사를 해보자
  • prettier   => node.js에서 팀 단위 협업시, 코딩 스타일을 통일해보자
  • bcrypt  => node.js에서 데이터베이스에 저장할 비밀번호를 암호화해보자
  • ws      => 채팅 기능을 구현하기 위해 WebSocket을 사용해봅시다.
  • jwt  => node.js에서 jwt 토큰을 이용한 로그인 기능을 구현해보자

 

 

🤭 구현한 기능

  1. 로그인 및 회원가입 기능
  2. 학습시간 설정 및 관리 기능
  3. 채팅 기능
  4. 그룹 만들기 및 그룹 가입 기능
  5. 그룹 랭킹 기능
  6. 그룹 게시판 기능

 

 

🎨  Sparta Study Club ERD

 

 

 

🤭 API

 

 

🤭 이번 프로젝트를 하며 새롭게 배운 것

 

  • Nest Js가 Express보다 편한 것 같다!

 

이번 프로젝트에서 사실 Nest Js가 어렵거나 난해했으면, 다른 팀들처럼 그냥 express를 사용했을 것 같습니다. 하지만 Nest Js가 낯설어서 처음에 조금 헤맨 것 말고는 크게 어려웠던 점은 없었으며, 오히려 express보다 협업할 때 더 편했습니다. 

 

저는 저번 인스타 클론 코딩 때 express를 사용했고, MVC 구조를 만들어서 백앤드 파일 구조를 만들었으며, 백앤드 작업을 하는 팀원들에게 작업을 할당해주었습니다. 문제는 express에서 그러한 구조를 만들려면 처음부터 끝까지 하나하나 만들어 가야 하고, 여기에 쏟은 시간이 엄청났었습니다. 때문에 다음에는 Nest를 사용해서 프로젝트를 해야겠다고 마음먹었죠.

 

Nest Js를 실제로 써보니까. 정말 간단하고 괜찮은 프레임워크라는 생각이 들었습니다. 파일 구조를 힘들게 마우스 오른쪽 눌러가며 만들지 않아도, Nest Js 명령어만 몇 줄 사용하면 간단하게 내가 원하는 파일 구조를 만들어 주었습니다. 그리고 Nest Js와 궁합이 잘 맞는다고 알려진 TypeScript를 사용했기 때문에 타입으로 인해 발생하는 문법 오류들이 많이 줄어들게 되었습니다. 

 

요번에 저와 함께 백앤드를 작업한 팀원 분도 요번에 제가 졸라서(?) Nest Js를 하게 되었는데, 그분도 처음에만 힘들었지, 가면 갈수록 express보다 편한 것 같다고 말씀해주셨습니다. >_<

 

 

 

 

 

 

🤔 이번 프로젝트를 하며 어려웠던 것

 

이번 프로젝트를 하며 제일 시간이 오래 걸리고 어려웠던 것은, TypeOrm 사용방법이었습니다.

 

일단 항해 99에서 Nest JS + TypeOrm으로 하는 조가 우리밖에 없었고, 정보를 얻는 것이 쉽지 않았습니다. 

 

결국 아래처럼 TypeOrm 학습에 유용한 링크 2개를 찾았고, 시행착오를 거쳐서 해결했습니다만......

 

 

TypeOrm도 find, findOne 메서드 등을 지원합니다.

이런 메서드들만 사용해도 어느 정도 문제는 해결할 수 있습니다.

 

하지만 조금 복잡한 조건의 조인이 들어가거나, 쿼리가 깊어지는 경우는 TypeOrm의 createQueryBuilder로 해결하시길 바랍니다. TypeOrm의 공식 깃허브에서도 createQueryBuilder의 사용을 권장하고, 궁금한 게 있어서 글을 올려도 거의 대부분 createQueryBuilder를 사용하는 방법을 알려주십니다.

 

저처럼 find 메서드 같은걸 사용해서 해결해봐야지 생각했다가는 시간만 날리실 수 있습니다. ㅠㅠ 

 

 

 

 

Yangeok

Yangwook Ian Jeongs' Development Blog

yangeok.github.io

 

 

typeorm/typeorm

ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, SAP Hana, WebSQL databases. Works in NodeJS, Browser, Ionic, Cordova and Elect...

github.com

 

 

 

 

😭 반성점 OR 다음 프로젝트부터 고치고 싶은 것

  • Try Catch문을 너무 남발한 나머지, 쿼리 오류가 났을 경우가 찾기 힘들었습니다.
  • 성공 시 success, 실패 시 fail 메시지를 보내는 것도 좋지만, 오류가 났을 경우는 더 구체적인 메시지를 띄웠어야 했을 것 같습니다.

 

 

 

 

👾 결과물