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
- Sequelize
- flask
- 자료구조
- react
- Queue
- dfs
- MySQL
- GIT
- nodejs
- 정렬
- Express
- class
- Dinosaur
- JavaScript
- jest
- Bull
- game
- nestjs
- Python
- 게임
- typeORM
- cookie
- AWS
- MongoDB
- mongoose
- Nest.js
- TypeScript
- 공룡게임
- OCR
Archives
- Today
- Total
포시코딩
[Nest.js] 7. Entity & Repository 본문
728x90
Entity
생성
article.entity.ts
import { Column, CreateDateColumn, DeleteDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm';
@Entity({ schema: 'nest_prac', name: 'articles' })
export class Article {
@PrimaryGeneratedColumn({ type: 'int', name: 'id' })
id: number;
@Column('varchar', { length: 50 })
title: string;
@Column('varchar', { length: 1000 })
content: string;
@Column('varchar', { length: 10 })
author: string;
@Column('varchar', { select: false })
password: string;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
@DeleteDateColumn()
deletedAt: Date | null;
}
- PK에는 @PrimaryGeneratedColumn 어노테이션 사용
- password는 정말 필요한 상황이 아니면 select를 할 필요가 없기 때문에 { select: false }
- 실제 삭제(Hard Delete)가 아닌 논리적 삭제(Soft Delete)를 하기 위해
deletedAt 컬럼을 위처럼 세팅.
전체 게시글을 가져올 때 deletedAt이 null인 게시물만 갖고오는 방식으로 삭제된 효과를 줄 수 있다.
Repository
repository 사용에는 일반 repository와 커스텀 repository 사용으로 나뉘는데
일반 repository 명세는 다음과 같다.
https://github.com/typeorm/typeorm/blob/master/docs/repository-api.md
일반 repository의 사용은 express에서 처럼 따로 파일을 만드는게 아니다.
service의 생성자에 사용할 repository를 주입하면 된다.
service의 생성자에 repository를 주입하기 전에 먼저
해당 서비스를 관장하는 module에서 Article entity를 imports한다고 명시해줘야 한다. (중요!)
module에서 entity 명시
board.module.ts
imports: [TypeOrmModule.forFeature([Article])],
그 다음 아까 typeorm.config.service.ts에서 비워놓았던 entities에서도 명시해주면 된다.
config에서 entity 명시
typeorm.config.service.ts
entities: [Article],
service의 생성자에 repository 주입
마지막으로 service의 생성자에 repository를 주입한다.
board.service.ts
constructor(
@InjectRepository(Article) private articleRepository: Repository<Article>
) {}
이렇게 일반 repository를 사용할 준비가 되었다.
728x90
'Node.js' 카테고리의 다른 글
[TypeORM] FK 설정 후 join해서 데이터 가져오기 (0) | 2023.02.17 |
---|---|
[Nest.js] 8. TypeORM Repository 적용 (끝) (0) | 2023.02.16 |
[Nest.js] 6. TypeORM 설치 및 세팅 - @nestjs/config 사용법 (0) | 2023.02.16 |
[Nest.js] 5. 게시판 기능 확인과 class-transformer 사용 (0) | 2023.02.09 |
[Nest.js] 4. 게시판 만들기 - Service (0) | 2023.02.09 |