728x90
* 개발 환경: Typescript, NestJS, Typeorm, MySql
NestJS 프레임워크로 Typeorm을 통해 MySql database를 사용하려고 하던 중, entity.ts 파일에서 아래와 같은 에러가 발생했다.
'data type array is not supported by mysql database'
//error가 났던 movie.entity.ts 파일
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class Movie {
@PrimaryGeneratedColumn()
id: number;
@Column()
title: string;
@Column()
year: number;
@Column()
genres: string[]; //error 발생
}
배열 형태의 데이터는 mysql에서 받아들일 수 없다는 내용이다.
처음에는 배열을 string형태로 변환해야 하나 싶었다.
`[]` 배열을 백틱으로 감싼 형태로 일일이 변경하고 실행시켜 보니 에러는 나지 않았다.
하지만 찜찜한 마음이 들어 다른 방법이 없을까 하던 중
Typeorm 공식 문서에서 좋은 방법을 발견했다.
@Column() 데코레이터의 인자로 'simple-array'를 넣어주는 방법이다.
이렇게 하면, 데이터 타입을 배열로 지정해도 아무 문제 없이 database에 저장하고 호출하는 게 가능하다.
array 외에도, 'simple-json', 'simple-enum'이라고 입력해주면 json(객체)과 enum도 사용 가능하다.
수정한 코드는 아래와 같다.
//수정된 movie.enitity.ts 파일
import { Column, Entity,PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class Movie {
@PrimaryGeneratedColumn()
id: number;
@Column()
title: string;
@Column()
year: number;
@Column('simple-array')
genres: string[];
}
이렇게 하면 database에 들어갈 때도 문제가 없고, 다른 파일들에서 편하게 'genres'의 type을 string[] 배열로 선언할 수 있다.
728x90
'Node.js > NestJS' 카테고리의 다른 글
NestJS 커스텀 프로바이더 사용법 (3) | 2025.01.05 |
---|---|
NestJS API 응답에서 불필요한 프로퍼티를 제외하는 방법 (2) | 2024.08.03 |
NestJS 전역 CacheManager로 Redis 사용하기 (3) | 2024.07.06 |
[TIL][NestJS] @Param() 데코레이터 사용 시 주의사항 (+Typeorm) (0) | 2023.05.19 |
[NestJS] 각종 트러블 슈팅 (0) | 2023.05.18 |