@CreateDateColumn์ ์ํฐํฐ์ ์ฝ์ ๋ ์ง๋ก ์๋ ์ค์ ๋๋ ํน์ ์ด์ด๋ค. ์ด ์ด์ ์ค์ ํ ํ์๊ฐ ์๋ค.
@UpdateDateColumn์ entity manager ๋๋ repository์ ์ ์ฅ์ ํธ์ถํ ๋๋ง๋ค ์ํฐํฐ์ ์ ๋ฐ์ดํธ ์๊ฐ์ผ๋ก ์๋ ์ค์ ๋๋ ํน์ ์ปฌ๋ผ์ด๋ค. ์ด ์ด ๋ํ ์ค์ ํ ํ์๊ฐ ์๋ค.
@DeleteDateColumn์ entity manager ๋๋ repository์ ์ผ์ ์ญ์ ๋ฅผ ํธ์ถํ ๋๋ง๋ค ์ํฐํฐ์ ์ญ์ ์๊ฐ์ผ๋ก ์๋ ์ค์ ๋๋ ํน์ ์ด์ด๋ค. ์ด ์ด ๋ํ ์ค์ ํ ํ์๊ฐ ์๋ค. @DeleteDateColumn์ด ์ค์ ๋๋ฉด ๊ธฐ๋ณธ ๋ฒ์๋ "์ญ์ ๋์ง ์์"์ด ๋๋ค.
@ObjectType()
export class CoreEntity {
@PrimaryGeneratedColumn()
@Field((type) => Number)
id: number;
@CreateDateColumn()
@Field((type) => Date)
createdAt: Date;
@UpdateDateColumn()
@Field((type) => Date)
updatedAt: Date;
}
enum์ ํน์ ํ์ฉ ๊ฐ ์งํฉ์ผ๋ก ์ ํ๋๋ ํน์ํ ์ข ๋ฅ์ ์ค์นผ๋ผ์ด๋ค.
code first ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ ๋ TypeScript enum์ ์์ฑํ์ฌ GraphQL enum type์ ์ ์ํ๋ค.
registerEnumType ํจ์๋ฅผ ์ฌ์ฉํ์ฌ AllowedColor enum์ ๋ฑ๋กํฉ๋๋ค.
export enum AllowedColor {
RED,
GREEN,
BLUE,
}
registerEnumType(AllowedColor, { name: 'AllowedColor' });
๋ชจ๋ ์ํฐํฐ์๋ ํน์ ์ํฐํฐ ์ด๋ฒคํธ๋ฅผ listenํ๋ ์ปค์คํ
๋ก์ง ๋ฉ์๋๋ฅผ ๊ฐ์ง ์ ์๋ค.
๊ทธ๋์ listenํ๋ ค๋ ์ด๋ฒคํธ๋ฅผ ๋ฉ์๋์ ํน์ ๋ฐ์ฝ๋ ์ดํฐ๋ก ๋งํฌํด์ค๋ค.
์ด ์ํฐํฐ ์ฝ์
์ ์ ์ด ๋ฐ์ฝ๋ ์ดํฐ๊ฐ ์ ์ฉ๋๋ ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
์ํฐํฐ์ ๋ฉ์๋๋ฅผ ์ ์ํ๊ณ @BeforeInsert ๋ฐ์ฝ๋ ์ดํฐ๋ก ํ์ํ๋ฉด TypeORM์ ์ํฐํฐ๊ฐ repository/manager save๋ฅผ ์ฌ์ฉํ์ฌ insert๋๊ธฐ ์ ์ ์ด ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
ex) mongoose์์ pre save์ฒ๋ผ DB์ ์ ์ฅ๋๊ธฐ ์ ์ ์คํ๋๋ ํจ์
@BeforeInsert()
updateDates() {
this.createdDate = new Date();
}
Hash function : input ๋ฌธ์์ด์ ๋ํด ๋๋ค output ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ ํจ์
npm i bcrypt
npm i @types/bcrypt -D