티스토리 뷰
이제 실질적으로 데이터베이스를 이용하여 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
이라는 파일을 만들었다.
{
"type": "postgres",
"host": "localhost",
"port": 5432,
"username": "postgres",
"password": "root",
"database": "postgres"
}
이렇게 작성해 주었다. 자신의 DB환경에 맞게 설정을 바꿔주면 된다.
그 다음 app.module.ts
파일에 모듈 부분을 이렇게 수정해주자.
@Module({
imports: [TypeOrmModule.forRoot()],
controllers: [AppController, UserController],
providers: [AppService],
})
이렇게 하면 기본적인 typeORM셋팅을 마쳤다.
yarn start:dev
명령을 실행했을 때 별도의 에러메세지가 나오지 않는다면 데이터베이스 커넥션에 문제가 없다고 생각해도 된다.
entity 작성
먼저 user폴더 아래에 user.entity.ts
라는 파일을 만들고 entity를 작성했다.
import {
Column,
CreateDateColumn,
Entity,
JoinColumn,
OneToOne,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
import { Car } from 'src/car/car.entity';
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column()
gender: string;
@Column()
age: number;
@OneToOne(() => Car)
@JoinColumn()
car: Car;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
}
entity를 작성하는 방식은 공식문서를 참고하면 된다.
다음은 car에 대한 entity를 작성했다.
import {
Column,
Entity,
PrimaryGeneratedColumn,
CreateDateColumn,
UpdateDateColumn,
} from 'typeorm';
@Entity()
export class Car {
@PrimaryGeneratedColumn()
id: number;
@Column()
model: string;
@Column()
price: number;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
}
car의 id는 유저의 Car와 외래키 관계이다.
이제 나머지 API를 작성해보자.
POST요청, UPDATE요청, DELETE 요청을 처리 할 것이다.
user.controller.ts
를 이렇게 수정했다.
import {
Body,
Controller,
Delete,
Get,
Param,
Patch,
Post,
} from '@nestjs/common';
import { User } from './user.entity';
@Controller('user')
export class UserController {
@Get()
getAllUser() {
return 'get All User';
}
@Get(':id')
getUserById(@Param('id') id: string) {
return `get User with the id ${id}`;
}
@Post()
createUser(@Body() userData: User) {
return `create User`;
}
@Delete(':id')
deleteUserById(@Param('id') id: string) {
return `delete user with the id ${id}`;
}
@Patch(':id')
updateUserById(@Param('id') id: string, @Body() userData: User) {
return `update user with the id ${id}`;
}
}
아직 실질적으로 집적 데이터베이스를 이용해 처리하지는 않았다.
하지만 일단 이렇게 작성했을 때 메소드를 달리하여 요청을 보내면 그에 알맞은 결과가 돌아오는 것을 확인할 수 있다.
이제 요청이 정상적으로 들어오는 것을 확인 했으니 dto를 이용해 service 파일을 만들어 비즈니스 로직을 작성해 보겠다.
'Node.js' 카테고리의 다른 글
Nest.js + typeORM 으로 REST API 서버 만들기 (5) (0) | 2021.07.29 |
---|---|
Nest.js + typeORM 으로 REST API 서버 만들기 (4) (0) | 2021.07.29 |
Nest.js + typeORM 으로 REST API 서버 만들기 (2) (0) | 2021.07.29 |
Nest.js + typeORM 으로 REST API 서버 만들기(1) (0) | 2021.07.29 |
Express 스태틱파일 서빙 (0) | 2021.07.17 |
- Total
- Today
- Yesterday
- 그래프
- 동적계획법
- 알고리즘
- 컴퓨터 통신
- 그리디
- nodeJS
- 시뮬레이션
- 자바스크립트
- ReactNative
- 벨만포드
- 구현
- 자바
- typeORM
- 컴퓨터 구조
- Computer Architecture
- 백트래킹
- 투포인터
- 백준
- 중앙대학교
- nestjs
- 스레드
- 재귀
- 예외처리
- node.js
- nest.js
- java
- dfs
- 세그먼트 트리
- BFS
- boj
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |