JavaScript/JS & TS
[NestJS]TypeORM과 DB 컬럼 명명 규칙
noddu
2023. 9. 21. 11:00
728x90
반응형
기존 Entity
notice.entity.ts
@Entity()
export class Notice extends BaseEntity {
@PrimaryGeneratedColumn()
wr_no: number;
@Column()
wr_category: string;
@Column()
wr_subject: string;
@Column()
wr_content: string;
@Column()
wr_hit: number;
@ManyToOne((type) => Member, (wr_writer) => wr_writer.mb_boards, {
eager: false,
})
wr_writer: Member;
@Column()
wr_date: Date;
}
간단한 게시판 Entity를 만들었습니다
TypeORM을 사용해서 Snake 케이스로 DB에 저장하려고 했습니다.
문제 발생!
![](https://blog.kakaocdn.net/dn/Sue5s/btsu7U2AakK/1vXLZdyKPbZIPkJoWjqhwK/img.png)
나머지는 Snake케이스로 저장 됐지만,
맨 마지막 컬럼이 wr_writer_mb_no로 저장이 되는게 아니라 Camel케이스로 저장이 되는 문제가 있었습니다.
반응형
명명 규칙 패키지 설치/ 문제 해결
notice.entity.ts
@Entity()
export class Notice extends BaseEntity {
@PrimaryGeneratedColumn()
wrNo: number;
@Column()
wrCategory: string;
@Column()
wrSubject: string;
@Column()
wrContent: string;
@Column()
wrHit: number;
@ManyToOne((type) => Member, (wr_writer) => wr_writer.mbBoards, {
eager: false,
})
wrWriter: Member;
@Column()
wrDate: Date;
}
( + 애플리케이션 코드의 필드 명명 규칙은 Camel케이스 라는걸 알았습니다....)
그래서 Entity를 모두 Camel케이스로 변경 했습니다
npm install typeorm-naming-strategies
그리고 TypeORM에서 DB에 저장할 때 컬럼명을 Snake케이스로 저장하기 위해
명명 전략 패키지를 설치합니다.
typeorm.config.ts
...
import { SnakeNamingStrategy } from 'typeorm-naming-strategies';
export const typeOrmConfig: TypeOrmModuleOptions = {
...
namingStrategy: new SnakeNamingStrategy(),
};
TypeORM에서 명명 규칙이 적용 되도록 추가합니다.
![](https://blog.kakaocdn.net/dn/m5iQz/btsu8j87tef/2tOLBJUuQ9cRkvDmTuLnKk/img.png)
다시 POST 요청을 보내봅니다.
![](https://blog.kakaocdn.net/dn/VzU4r/btsuSiYiv0Z/uuxC6hLFp09PJiXC9Pfsa0/img.png)
명명 규칙 전환이 돼 정상적으로 Snake 케이스로 저장되는 것을 확인할 수 있습니다.
반응형