NestJS에서 enum타입은 주로 GraphQL과 함께 사용되며, 특정값들의 집합으로 타입을 제한할 때 사용된다. 예를 들면, 어떤 앱에서 사용자의 Role에 따른 접근 권할을 설정할 때, Role의 종류를 Client, Owner, Delivery로 제한하는데 사용될 수 있다.
enum을 생성하면 registerEnumType을 통해 GraphQL 스키마에서 사용할 수 있다.
//enum만들고 등록
export enum AllowedColor {
RED,
GREEN,
BLUE,
}
registerEnumType(AllowedColor, {
name: 'AllowedColor',
});
//entity
@Field(type => AllowedColor)
favoriteColor: AllowedColor;
단, enum은 값을 지정하지 않으면 DB상에 0,1,2로 값이 저장되기 때문에 이를 원치 않으면 특정 값으로 지정할 수도 있다.
//enum에 텍스트 지정
export enum AllowedColor {
RED = "RED",
GREEN = "GREEN,
BLUE = "BLUE",
}
참조
https://docs.nestjs.com/graphql/unions-and-enums#enums
https://graphql.org/learn/schema/#enumeration-types