분류 전체보기

    [WIL] 실전 프로젝트 1주차

    1. 테이블간의 매핑된 필드의 경우 직접적으로 데이터를 넣지 못하는 현상 ManyToOne / OneToMany 필드로 묶인 필드의 경우 entity형식의 데이터를 넣어야 조인 칼럼의 데이터를 넣을 수 있었습니다. 다음은 예시입니다. async commentQuest( // user: User, feed: Feed, comment: string ) { const newComment = this.create({ comment, feed, }); await this.save(newComment); return newComment; } comment에 feedId를 넣고자 할때 feedId를 직접적으로 넣을 수 없고 feed: Feed와 같이 entity를 불러와서 넣어야합니다. 2. 채팅 서버 구현 nest..

    [NestJS] NestJS 시작하기

    @nestjs/cli를 전역으로 설치를 하고 프로젝트를 생성합니다. nest new로 프로젝트를 생성하실 때는 원하는 경로로 이동후 실행하셔야합니다. $ npm i -g @nestjs/cli $ nest new [프로젝트명] 그럼 app.module.ts, app.controller.ts, app.service.ts 가 src/ 폴더 안에 생성되는데 하나씩 역할을 살펴보겠습니다. module module.ts는 하나의 기능을 하는 모듈을 말합니다. module안에는 contorller와 provider가 있을 겁니다. controller 컨트롤러는 기본적으로 url을 가져오고 함수를 실행합니다. express에서 라우트같은 존재라고 할 수 있습니다. 컨트롤러에는 데코레이터가 있습니다. 한 가지 주의할 점..

    [WIL] Middleware, N+1 문제 정리 및 해결

    Middleware 서버에 클라이언트로부터 들어온 요청을 처리하는 중간에 기능상의 목적에 맞게 넣어 거쳐가는 함수들을 미들웨어라고 합니다. 여러 기능이 필요한 경우 여러 미들웨어를 넣을 수도 있습니다. 각각의 미들웨어는 next()라는 함수가 실행됨으로서 다음 미들웨어가 호출되어 실행됩니다. 또한 값을 담아서 다음 미들웨어로 해당 값을 전달해 줄 수도 있습니다. 1. 어플리케이션 레벨 미들웨어 어플리케이션 레벨 미들웨어란 express() 로 생성할 수 있는 app 객체의 app.use()나 app.METHOD() 함수를 이용해 미들웨어를 app 인스턴스에 바인딩하는 미들웨어 입니다. 마운트 경로가 없는 미들웨어 함수는 앱이 요청을 수신할 때마다 실행하게 됩니다. ex) app.use((req, res,..

    [NestJS] NestJS 시작하기

    @nestjs/cli를 전역으로 설치를 하고 프로젝트를 생성합니다. nest new로 프로젝트를 생성하실 때는 원하는 경로로 이동후 실행하셔야합니다. $ npm i -g @nestjs/cli $ nest new [프로젝트명] 그럼 app.module.ts, app.controller.ts, app.service.ts 가 src/ 폴더 안에 생성되는데 하나씩 역할을 살펴보겠습니다. module module.ts는 하나의 기능을 하는 모듈을 말합니다. module안에는 contorller와 provider가 있을 겁니다. controller 컨트롤러는 기본적으로 url을 가져오고 함수를 실행합니다. express에서 라우트같은 존재라고 할 수 있습니다. 컨트롤러에는 데코레이터가 있습니다. 한 가지 주의할 점..

    [docker] m1 맥에서 docker mysql 에러해결

    express + mysql 을 docker-compose.yaml로 동시에 같은 네트워크에 2개의 컨테이너를 띄울 겁니다. docker.compose.yaml 파일에 각 컨테이너에 대한 정보를 입력해야하는데 다음과 같습니다. 하지만 저처럼 m1 맥에서 mysql 컨테이너를 띄울 경우 platform을 적어줘야합니다. mysql_node 컨테이너에 다음 코드를 추가해주시면 됩니다. platform: linux/x86_64 docker-compose.yaml 파일의 전체 코드는 이렇습니다. version: "3.8" services: node_app: build: context: . dockerfile: Dockerfile ports: - "8080:8080" volumes: - .:/app - '/app..

    [TDD] Test code를 작성하는 이유와 Unit test와 Integraion test의 차이

    Test code를 작성하는 이유 개발과정이 길어지게 되면 초반의 문제들을 모르고 지나가는 경우들이 많습니다. 그렇게 되면 나중에 작성된 코드들을 다시 수정해야 한다거나 무너지는 경우들이 있기에 테스트 코드들로 문제를 미리 발견하여 짚고 넘어 가야합니다. 여기서 "애자일한 방법"이라는 용어가 사용되는데 이게 뭔지 살펴보겠습니다. 애자일(Agile) 방법 간단하게 말하면 개발 방식을 유연하게 가져가겠다는 뜻입니다. 기획문서만 보고 개발하는 것이 아닌 디자이너, 기획자 등 참여하는 모든 사람들과 소통하며 피드백을 더해서 개발해 나간다는 의미 입니다. 애자일 프로세스는 민첩한 변화 대응을 중요시 합니다. 다시 본론으로 돌아와서 test code를 작성하는 이유를 애자일 방법론에 빗대어 설명하면 작은 단위의 프..

    [Docker] docker로 mysql 설치하고 접속하기

    docker hub에서 mysql image 다운받기 docker pull mysql // apple sillicon docker pull --platform linux/x86_64 mysql 애플 실리콘의 경우 아래 명령어로 받을 수 있습니다. 다음과 같이 입력하여 mysql image가 잘 받아졌는지 확인합니다. docker images 다음 명령어로 받아온 이미지로 container를 생성합니다. "password" 자리에는 설정하고자 하는 mysql 비밀번호를 넣으시면 됩니다. 이름은 "mysql_test" 라고 하겠습니다. 마지막에 latest를 붙인 이유는 위에서 pull할 때 mysql뒤에 아무 조건도 넣지 않았습니다. 따라서 기본값이 latest를 받아온 것 입니다. docker run -..