OneToMany, ManyToOne, ManyToMany 를 작성해보자. OneToMany, ManyToOne 앞서 작성 했던 User에 할일 목록인 task 컬럼을 추가하자. 이는 유저입장에서는 task와 OneToMany 관계이며 Task 입장에서는 ManyToOne 관계이다. 먼저 task.entity.ts 파일을 만들고 아래와 같이 작성했다. import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm' import { User } from './user.entity' @Entity() export class Task { @PrimaryGeneratedColumn() id: number @Column() name: stri..
원하는 기능을 만들기 위해 먼저 Car에 대한 레코드를 다음과 같이 만들었다. 유저가 자동차를 구매하여 해당 유저의 Car정보를 업데이트 해야하는 상황이라고 가정해 보자. /user/:id 에 patch 요청을 보내면 해당 body를 업데이트 하는 식으로 car정보를 업데이트 해보겠다. 먼저 update-user.dto.ts 파일을 작성했다. 이때, update-user.dto.ts 파일은 create-user.dto.ts 파일과 매우 유사한 구조를 갖는다. 다만 컬럼을 옵션으로 가질 뿐이다. 이때는 같은 코드를 다시 작성하지 않고 mapped-types 의 PartialType 을 이용하면 된다. yarn add @nestjs/mapped-types 를 설치하자. 그 다음 아래와 같이 코드를 작성하자...
사용자를 생성하는 함수를 작성하기 전에 유저의 id로 유저정보를 GET하는 함수를 작성했다. async getUserById(id: number): Promise { const user = await this.userRepository.findOne({ where: { id: id } }); if (!user) throw new NotFoundException('user not found with the id ${id}'); return user; } 이렇게 작성하면 된다. 다음 유저를 create하는 함수이다. createUser(userData: createUserDto) { this.userRepository.save(userData); } 이제 컨트롤러를 다음과 같이 수정해주자. @Get(':id..
user를 create하는데 쓰기 위한 dto를 만들자. dto란 data transfer object의 약자로 계층간 데이터 교환을 위한 객체를 말한다. 쉽게 말하면 어떠한 요청이 들어올때 데이터를 전송하는 객체의 규격이다. 데이터를 생성하고자 하는 요청이 올때 우리가 필요한 요구사항들을 정의해 놓는 것이다. 그리고 나는 이 요구사항을 검증하기 위해 class-validator 라는 것을 이용했다. 먼저 src/user/dto 아래에 create-user.dto.ts 라는 파일을 만들었다. 그 다음 yarn add class-validator class-transformer 를 설치했다. 그 다음 이렇게 작성했다. import { IsNumber, IsOptional, IsString } from 'c..
이제 실질적으로 데이터베이스를 이용하여 User와 Car에 대한 데이터를 관리하고 POST요청, UPDATE 요청등을 수행 해 보겠다. 데이터 베이스는 무엇을 사용하던 상관없다. 심지어 NoSQL도 typeORM의 지원을 받을 수 있다. 나는 postgresql 을 이용하겠다. 디비설치는 각각의 로컬환경에서 진행하면 된다. typeORM 설치 yarn add typeorm @nestjs/typeorm @types/node reflect-metadata pg 필요한 패키지들을 먼저 설치해주자. 그 다음 main.ts 에 import 'reflect-metadata'; 를 추가해준다. 이제 typeORM 사용을 위한 설정을 해보자. 루트 폴더에 ormconfig.json 이라는 파일을 만들었다..
nest를 이용해 만들 API 서버를 정의해보자. 내가 만들 서버는 자동차회사의 API라고 생각해보겠다. 먼저는 유저에 대한 정보가 있고, 각각의 유저는 자동차를 최대 1대 가질 수 있다고 생각한다. 즉, User 테이블과 Car 테이블을 만들어 이 정보들에 대한 API를 제공 할 것이다. User 모듈 만들기 그럼 먼저 User에 대한 모듈을 만들자. Nest에는 Nest CLI라는 매우 편리한 기능이 있다. 컨트롤러를 만들고, 서비스를 만들고, 모듈을 만드는 등의 반복적인 일들을 보다 쉽고 편하게 만들 수 있게도와준다. NEST CLI의 명령을 확인하고 싶으면 커맨드 라인에 nest 를 입력하면 된다. 이런 결과를 볼 수 있다. 먼저는 컨트롤러를 만들어 보겠다. nest generate control..
Nest.js란? Node.js에는 많은 프레임워크가 존재한다. 그 중에 가장 널리 쓰이고 대표적인 프레임워크는 Express라고 볼 수 있다. Express는 Nodejs를 통해 개발을 할 때 많은 편리함을 가져다 준다. Nest는 쉽게 설명하면 Express의 확장된 형태라고 볼 수 있다. 기본적으로 Typescript를 지원하며 자바의 Springboot와 유사한 구조를 가지고 있어 대규모 프로젝트에 유용한 프레임워크이다. 만약 여러명의 개발자와 함께 협업을 한다면 개발자마다 코딩 스타일이 다를것이다. 그러나 NEST를 사용하면 어느정도 정해져있는 구조를 통해 대규모 프로젝트에서도 팀원간의 코딩스타일이 달라 생기는 문제들을 해결할 수 있다. Nest 시작하기 먼저 Nest를 이용하기 위해 Nest를..
Express를 통해 스태틱파일을 서빙해보자. 스태틱파일은 보통 서버에 저장해 둔 파일을 사용자가 바로 내려받거나, css나 html을 내려받을 때 사용된다. 사용법은 간단하다. app.use(express.static('src/public')) 이 코드를 미들웨어를 사용하듯 추가하면 된다. 스태틱파일서빙을 할 때 유의해야 할 점이 있다. 만약에 사용자가 /users/13 라는 주소로 접속을했다. 원래 프로그램의 의도는 해당하는 데이터를 사용자에게 보여줘야한다. 그러나 만약 스태틱파일을 서빙하는 src/public 폴더 내에 users/13 라는 파일이 있다면 사용자에게 html페이지를 보여주는 것이 아닌 해당 파일을 보내게 된다. 이것은 우리가 원하지 않은 결과일 것이다. 가장 간단한 해결방법에는 스태..
Promise 한국어로 약속 이라는 뜻이다. Promise는 자바스크립트에서 제공하는 비동기를 간편하게 처리할 수 있도록 도와주는 객체이다. Promise는 정해진 기간의 기능을 수행 한 후에 정상적으로 기능을 수행했다면 성공의 메세지와 함께 결과 값을 전달해주고 만약 기능을 수행하는 데에 문제가 생기면 에러를 전달 해준다. Promise에는 두가지의 포인트가 있다. state : promise의 상태 producer와 consumer의 차이 Promise의 상태는 다음과 같이 나뉜다 pending -> fulfilled or rejected 또 promise를 만드는 producer 와 이것을 사용하는 comsumer 로 나뉜다. 콜백 대신 Promise를 사용하는 코드예시를 살펴보자. const pr..
stream이란? stream은 여러가지 종류가 있다. file로 부터 읽어오는 스트림일 수 있고, 네트워크로부터 읽어오는 스트림일 수 있다. 소스로부터 핸들러에게 데이터를 여러 chunks로 나누어 보낸다. stream은 스트림 가능한 소스로부터 데이터를 작은 청크로 쪼개 처리할 수 있게한다. 큰 데이터를 처리하거나, 비동기적으로만 얻을 수 있는 데이터를 처리할 때 유용하다. 예를들어 5GB파일의 데이터를 처리할 때 한번에 데이터를 올려 처리하려고 한다면 메모리의 5GB공간을 사용해야 할 것이다. 그러나 스트림을 사용하면 이 데이터를 잘개 쪼개어 사용할 수 있다. stream의 종류 Readable 스트림으로부터 읽을 수 있다. fs.createReadStream process.stdin 서버 입장의 ..
- Total
- Today
- Yesterday
- nodeJS
- 컴퓨터 통신
- 투포인터
- ReactNative
- 자바
- 백트래킹
- nestjs
- 예외처리
- nest.js
- node.js
- Computer Architecture
- dfs
- 재귀
- 세그먼트 트리
- java
- 시뮬레이션
- 그리디
- 컴퓨터 구조
- 스레드
- 그래프
- 동적계획법
- 벨만포드
- 알고리즘
- 중앙대학교
- typeORM
- boj
- 구현
- 자바스크립트
- BFS
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |