⌨️/Node.js 10

[jest] nestjs 테스트 코드

테스트 코드를 공부하면서 작성하던 중에 let service: CollectionService; 이러한 작성 방식과 const collectionService = { getMyColList getUserColList getMyCol createCol updateCol deleteCol addContentToCollection removeContentFromCollection } 이러한 작성 방식은 어떤 차이가 있는 건지 궁금해져서 정리해봤다. (예제는 현재 작성 중인 테스트 코드 파일에서 가져왔습니다) 1. 첫번째 방식은 CollectionService 클래스의 인스턴스를 생성하고, 해당 인스턴스를 사용하여 테스트를 진행한다. (이것을 service라는 변수에 할당) 이렇게 실제 클래스를 가져오기 때문에..

⌨️/Node.js 2024.04.22

[NestJS]

익스프레스의 단점, 한계 필요한 기능이 생길 때마다 미들웨어가 자꾸 추가되고 그러면 익혀야 할 것이 늘어나고 코드도 계속해서 수정해야 함 Nest.js의 장점 컨트롤러, 서비스, 미들웨어, 인터셉터, 모듈 등 웹 서버에 필요한 다양한 구성 요소를 커맨드로 정확하게 구현 가능 ex) nest g co posts -> Posts 컨트롤러 생성 가능 nest.js가 기계적으로 구성한 바탕 위에서는 오히려 실수하기가 힘들다! 때문에 코드의 생산성이 올라가 로직의 퀄리티를 올리는데 집중할 수 있음 컨트롤러 데코레이터를 통해 클래스가 컨트롤러 역할을 함 컨스트럭쳐 인자로 서비스 객체를 넘기면 멤머 변수에 서비스 객체가 주입 => DI (의존성 주입) 생성자를 통한 DI 컨트롤러는 고객(클라이언트)의 음식을 주문받고..

⌨️/Node.js 2024.04.11

[Node.js] 테스트 코드 (Test Code), Jest 테스팅 프레임워크

테스트 코드란? 작성한 코드에 문제가 없는지 테스트하는 코드 (= 개발한 코드가 의도대로 동작하는지 작성하는 코드) 결함의 존재를 인지하는 것이 중요 ✔️ 단위 테스트 (Unit Test) : 가장 작은 규모의 기능을 테스트 ✔️ 통합 테스트 (Intergration Test) : 다양한 기능을 합쳤을 때 생기는 문제를 방지하기 위한 테스트 ✔️ E2E 테스트 (End-to-end Test) : 백엔드부터 시작해서 최종적으로 웹페이지가 원하는대로 동작하며 원하는 데이터를 잘 보여주는지 확인하는 테스트 Jest 자바스크립트에서 사용 가능한 테스팅 프레임워크 테스트 코드의 표현이 타 프레임워크보다 훨씬 간결 yarn add -D jest jest 모듈 설치 "scripts": { "test": "node -..

⌨️/Node.js 2024.02.28

[Node.js] bcrypt 함수로 암호화하기

bcrypt는 암호화 해시 함수의 한 종류이다. 레인보우 테이블에 대항하기 위해 해시 함수에 솔트를 함께 사용한 것이 비크립트라고 하는데 레인보우 테이블은 뭐고 솔트는 뭘까... rainbow table 은 해시 함수를 이용하여 나올 수 있는 모든 값을 전부 저장한 테이블이고, 이 값들을 하나하나 대조해서 찾아내는 방식으로 사용된다. salt는 찾아보니 암호학 용어라고 하는데, 비밀번호에 소금을 친다는 느낌으로 이해하면 된다고 하셨다. 나는 이번 프로젝트에서 회원가입시 사용자의 비밀번호를 받아와 암호화하는 용도로 사용했다. // npm npm install bcrypt // yarn yarn add bcrypt 먼저 터미널에서 비크립트를 설치한다. const hashedPassword = await bc..

⌨️/Node.js 2024.02.06

[Node.js] npx prisma db push

~오늘의 수강 과목~ 1. Node.js 숙련 2주차 (이용우 튜터님) 게시판 기능을 구현하는 중인데 api 테스트를 하다가 Posts 작성 부분에서 막혔다. 리퀘스트를 작성하고 send 버튼을 누르면 서버가 끊겼다. 터미널을 확인해보니 Argument `password` is missing. 이라는 메세지가 나왔다. schema.prisma 파일의 Posts model 부분에서는 password를 설정해놨는데, api 테스트를 할 때 리퀘스트 json 부분에 title, content만 적어서 보낸 것이 원인으로 보였다. 그래서 schema.prisma 파일의 Posts model 부분으로 가서 password를 삭제 후 저장했으나 계속 같은 상태였다. 다들 감이 오셨는지... schema.prisma..

⌨️/Node.js 2024.01.31

[Node.js] MongoDB, Mongoose, schema, model 정리

~오늘의 수강 과목~ 1. Node.js 입문 1주차 (이용우 튜터님) _ express, module, router, req / res, api 2. Node.js 입문 2주차 (이용우 튜터님) _ MongoDB, schema, middleware MongoDB 실습하며 작성한 api는 인메모리 형식으로 저장 🤔 인메모리 형식이란? 메모리는 컴퓨터 껐다켜면 날아가서 보존해야하는 데이터는 보조기억장치에 저장을 해야함 아무튼 그 메모리에 저장이 되기 때문에 이 api도 컴퓨터 껐다 켜면 날아감 서버를 껐다 켤때마다 사용자의 데이터가 초기화되는건 문제가 큼 그래서 등장한 기술이 데이터베이스 데이터베이스는 어플리케이션이 종료된 후에도 데이터가 보존된다 데이터베이스는 실제 데이터가 저장되는 집합체라고 이해 데이..

⌨️/Node.js 2024.01.28

[Node.js] express, module, router, req/res, api 정리

~오늘의 수강 과목~ 1. Node.js 입문 1주차 (이용우 튜터님) _ express, module, router, req / res, api 2. Node.js 입문 2주차 (이용우 튜터님) _ MongoDB, schema, middleware Express Node.js 코드를 쉽게 짤 수 있게 도와주는 라이브러리 터미널로 yarn add express를 실행하면 package.json 파일에 express 설치가 기록되고, node_modules 폴더가 생성되는데 여기에는 라이브러리에 필요한 파일들이 담겨있다. Module 자바스크립트를 파일 단위로 분리한 코드의 덩어리 a.js 파일에서 짠 코드를 b.js 파일에서도 사용할 수 있게 해준다. 코드를 재사용할 수 있기 때문에 구조적인 관리가 용이..

⌨️/Node.js 2024.01.26

[Node.js] listen EADDRINUSE: address already in use 에러

서버에 올린 후 수정 사항이 생겨서 ssh 터미널에서 변경사항 git pull 받은 후 다시 node app.js로 서버를 열려고 하는데 에러가 떴다 listen EADDRINUSE: address already in use :::3000 3000번 포트가 다른 프로세스에서 열려있어서 그런 것 (파일이랑 브라우저는 전부 닫은 상태) 먼저 어디서 열려있는지 확인 sudo lsof -i 3000: sudo lsof -i :3000 sudo lsof -i TCP:3000 다 쳐봤는데 상위경로로 계속 나가서 찾아도 안된다 아무튼 저 명령어로 pid 값 찾아서 kill -9 pid번호 치면 열려있던 포트가 강제종료된다고 한다 난 여기까지 못왔지만… 그렇게 한시간쯤 찾아다니다가 자려고 누웠는데 문득 ssh 터미널에..

⌨️/Node.js 2024.01.25

[Node.js] The 'uri' parameter to 'openUri() must be a string··· 에러

내일배움캠프: Node.js_4기 22일차 TIL ~오늘의 수강 과목~ 1. Node.js 입문 2주차 (이용우 튜터님) 2. Node.js 입문 개인과제 리뷰, 해설 1. 어떤 문제가 있었는지 프로젝트를 진행하며 토큰을 보호하기 위해 .env, .gitignore 파일을 사용 vscode 내 터미널에서 MongoDB 연결 성공한 것 확인 완료 깃허브에 숨긴 파일 제외하고 제대로 올라간 것 확인 완료 그런데🥹!!! aws ec2 터미널을 통해 git clone 후 서버 연결을 시도하니 MongoDB 연 결 에 실패하였습니다. MongooseError: The 'uri' parameter to 'openUri() must be a string, got "undefined". Make sure the f..

⌨️/Node.js 2024.01.24

[Node.js] 기본적인 백엔드 개발 환경 셋팅 (yarn, express 설치)

내일배움캠프: Node.js_4기 21일차 TIL ~오늘의 수강 과목~ 1. Node.js 입문 2주차 (이용우 튜터님) Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 먼저 Node.js와 npm 혹은 yarn 설치가 필요하다. npm은 Node.js를 설치하면 자동으로 따라오고, yarn은 터미널에 npm install -g yarn 을 입력하면 된다. (-g는 글로벌이라는 뜻으로 전역설치되어 시스템 전체에서 쓸 수 있게 해준다) 1. 프로젝트를 진행할 폴더를 열고 app.js 파일을 생성 후(굳이 app.js 아니어도 상관없음) 2. 터미널에 yarn init -y 입력 (-y는 기..

⌨️/Node.js 2024.01.23