user.entity.ts
import { ApiProperty } from '@nestjs/swagger';
import {
Column,
CreateDateColumn,
Entity,
JoinColumn,
ManyToOne,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
import { User } from './user.entity';
@Entity()
export class Board {
@PrimaryGeneratedColumn()
boardId: number;
@ApiProperty({ description: 'user_id' })
@Column({ nullable: false })
userId: number;
@ApiProperty({ description: '제목' })
@Column()
title: string;
@ApiProperty({ description: '내용' })
@Column()
content: string;
@ApiProperty({ description: '생성일자' })
@CreateDateColumn()
createdAt: Date;
@ApiProperty({ description: '수정일자' })
@UpdateDateColumn()
updatedAt: Date;
@ApiProperty({ description: 'user' })
@ManyToOne(() => User)
@JoinColumn({ name: 'userId' })
user: User;
@PrimaryGeneratedColumn() : 자동으로 생성되는 Primary key를 의미한다.
@Column() : 열을 의미하며, 내부에 Option을 설정해 줄 수 있다. nullable, unique 등
user.entity.ts
import { ApiProperty } from '@nestjs/swagger';
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
import { Board } from './board.entity';
@Entity()
export class User {
@PrimaryGeneratedColumn()
userId: number;
@ApiProperty({ description: '유저아이디', example: 'admin' })
@Column({ unique: true })
username: string;
@ApiProperty({ description: '비밀번호', example: 'admin' })
@Column({ select: false })
password: string;
@Column()
name: string;
// arrow function으로 가져와서 Board를 호출한다.
@ApiProperty({ description: '작성한 게시글' })
@OneToMany(() => Board, (board) => board.user)
boards: Board[];
}
OneToOne
import { Entity, PrimaryGeneratedColumn, Column, OneToOne } from "typeorm"
import { User } from "./User"
@Entity()
export class Profile {
@PrimaryGeneratedColumn()
id: number
@Column()
gender: string
@Column()
photo: string
@OneToOne(() => User, (user) => user.profile) // specify inverse side as a second parameter
user: User
}
import {
Entity,
PrimaryGeneratedColumn,
Column,
OneToOne,
JoinColumn,
} from "typeorm"
import { Profile } from "./Profile"
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number
@Column()
name: string
@OneToOne(() => Profile, (profile) => profile.user) // specify inverse side as a second parameter
@JoinColumn()
profile: Profile
}
ManyToOne / OneToMany
import { Entity, PrimaryGeneratedColumn, Column, ManyToOne } from "typeorm"
import { User } from "./User"
@Entity()
export class Photo {
@PrimaryGeneratedColumn()
id: number
@Column()
url: string
@ManyToOne(() => User, (user) => user.photos)
user: User
}