먼저 npm i -g @nestjs/cli
로 nestjs를 설치한다.
프로젝트를 생성할 경로에서 nest new [프로젝트명]
으로 프로젝트를 생성한다.
app.module.ts 와 main.ts 만 남기고 새로 controller, module, service 파일을 생성한다. (src 안에 생성)
nest g mo products
: products.module.tsnest g co products
: products.controller.tsnest g s products
: products.service.ts
( middleware, common, dto는 이후에 작성 )
@Entity()
export class Product {
// 자동으로 1씩 증가해 생성되는 값 (sequence)
@PrimaryGeneratedColumn()
@IsNumber()
id: number;
@Column()
@IsString()
name: string;
@Column()
@IsNumber()
price: number;
// categories 클래스와 join
@ManyToOne((type) => Categories, (category) => category.products)
@JoinColumn()
category: Categories;
// table join 시 자동 생성된 categoryId를 명시하여 사용하기 위해 선언
@RelationId((product: Product) => product.categoryId)
categoryId: number;
}
products - categories join 시 products에 categoryId라는 내부 컬럼 생성(외래키)
이 값을 사용하기 위해서 @RelationId
로 명시하여 선언
import { IsNumber, IsString } from 'class-validator';
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { Product } from './products.entity';
@Entity()
export class Categories {
// 자동으로 1씩 증가해 생성되는 값 (sequence)
@PrimaryGeneratedColumn()
@IsNumber()
id: number;
@Column()
@IsString()
categoryName: string;
// products와 join
@OneToMany((Type) => Product, (product) => product.category)
products: Product[];
}