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에 저장하려고 했습니다.
문제 발생!
나머지는 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에서 명명 규칙이 적용 되도록 추가합니다.
다시 POST 요청을 보내봅니다.
명명 규칙 전환이 돼 정상적으로 Snake 케이스로 저장되는 것을 확인할 수 있습니다.
반응형
'JavaScript > JS & TS' 카테고리의 다른 글
[Javascript] input type="file"에 이미지 파일 업로드 (0) | 2024.10.20 |
---|---|
[Firebase] Functions private key 에러(deploy 실패) (0) | 2023.12.11 |
[Javascript] 원시타입 & 참조타입 (Primitive & Reference) 비교 (0) | 2023.02.17 |
summernote.js 용량 제한 수정 (0) | 2023.01.09 |
Javascript array 조작 (Firebase) (0) | 2022.11.07 |