반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- nestjs스터디
- 코테준비
- 플러터 공부
- 스프링공부
- 스프링부트
- Axon framework
- 알고리즘공부
- K8S
- 카프카
- 플러터 개발
- Kafka
- 스프링
- 기술면접공부
- nestjs
- JPA예제
- DDD
- 코테공부
- 프로그래머스
- 자료구조공부
- 자바공부
- JPA공부
- nestjs공부
- JPA
- Flutter
- 스프링 공부
- JPA 공부
- querydsl
- JPA스터디
- 기술공부
- 스프링부트공부
Archives
- Today
- Total
DevBoi
[NestJS] MariaDB , TypeOrm 세팅 본문
반응형
일단 가볍게 이미지를 받아준다.
docker pull mariadb
그리고, 포트랑 이름, 볼륨 마운트 정보를 넘겨서 커맨드를 입력한다.
사용자,포트,데이터베이스를 한번에 생성한다.
docker run -d --name mydb -p 3306:3306 --env=MYSQL_ROOT_PASSWORD=1234 --env=MYSQL_USER=admin --env=MYSQL_PASSWORD=admin --env=MYSQL_DATABASE=test mariadb
도커 프로세스를 확인한다.
끝
이제 NestJS쪽에서 디비 연동 및 세팅을 진행해보자.
일단. TypeOrm을 사용하기 위해서, 관련 라이브러리를 설치해줘야 한다.
npm install --save @nestjs/typeorm typeorm mysql2 @nestjs/config
추가로 이 파일을 생성해준다.
app.module.ts를 아래와 같이 수정해준다.
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { BoardsModule } from './boards/boards.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './entities/user.entity';
import { Record } from './entities/record.entity';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
port: 3306,
username: 'admin',
password: 'admin',
database: 'test',
entities: [User, Record],
synchronize: true,
}),
BoardsModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
src 하위에 entities폴더를 만들어서 아래와 같은 파일들을 만들어준다.
record-type.enum.ts
export enum RecordType {
INCOME = 'INCOME',
EXPENSE = 'EXPENSE',
SOCIALINCOME = 'SOCIALINCOME',
SOCIALEXPENSE = 'SOCIALEXPENSE'
}
record.entity.ts
import {
BaseEntity,
Column,
Entity,
PrimaryGeneratedColumn,
} from 'typeorm';
import { RecordType } from './record-type.enum';
@Entity()
export class Record extends BaseEntity {
@PrimaryGeneratedColumn()
no: number;
@Column()
createdDate: Date;
@Column()
type: RecordType;
@Column()
amount: number;
@Column()
remark: string;
@Column()
uid: number;
}
user.entity.ts
import {
BaseEntity,
Column,
Entity,
OneToMany,
PrimaryGeneratedColumn,
} from 'typeorm';
import { Record } from './record.entity';
@Entity()
export class User extends BaseEntity {
@PrimaryGeneratedColumn()
uid: number;
@Column({ unique: true })
kakaoId: string;
@Column({ unique: true })
email: string;
@Column()
nickname: string;
@Column()
password: string;
@OneToMany(() => Record, (record) => record.uid)
records: Record[]; // 한 유저당 여러개의 record 생성
}
이렇게 되면 해당 엔티티의 내용대로 데이터베이스의 테이블이 잘 설정 된 것을 확인 할 수 있다.
다음에는 기존에 생성했던 기준으로 엔티티를 수정하고, 이를 기준으로 repository를 생성해보자
반응형
'Develop > [NestJs]' 카테고리의 다른 글
[NestJS] Guard로, 인증 로직 구현 (0) | 2023.06.04 |
---|---|
[NestJs] TypeOrm 변경 및 Repository (0) | 2023.05.30 |
[NestJS] 커스텀 파이프 개발 (0) | 2023.05.27 |
[NestJs] 예외 처리 (0) | 2023.05.27 |
[NestJs] Pipes란? (0) | 2023.05.27 |