Skip to Content

TypeIs 복합 타입

DTO, QUERY, ARRAY는 Sequelize 컬럼 매핑이 없는 복합 타입입니다. DTO 클래스와 라우트 IOptions에서 사용됩니다.

import { TypeIs } from '@asapjs/sequelize';

이 페이지에서 찾을 수 있는 것

심볼SequelizeSwagger엔티티DTO라우트
TypeIs.DTOinclude 생성$refXOO
TypeIs.QUERYSequelize.literal()type에 위임XOX
TypeIs.ARRAY{ type: 'array', items }XOO

PAGING 관련 안내: TypeIs.PAGING은 현재 공개 API(TypeIsDecorators)에 포함되지 않습니다. LegacyTypeIs.PAGING으로만 접근 가능하며, 이는 index.ts에서 export되지 않습니다. 기존 문서에서 TypeIs.PAGING(Dto) 사용법이 참조되나, 코드 리팩토링 이후 공식 export에서 제외된 상태입니다.


TypeIs.DTO

TypeIs.DTO(options: { dto: typeof ExtendableDto; as: string; comment?: string; })
항목
Sequelizemiddleware() 호출 시 include 항목 생성
Swagger중첩된 DTO의 스키마를 가리키는 $ref
fixValue없음 — map()이 중첩 DTO의 자체 map()을 호출하여 DTO 필드를 처리

as는 엔티티의 BELONGSTO 선언에서 사용한 Sequelize 연관 별칭과 일치해야 합니다.

@TypeIs.DTO({ dto: UserInfoDto, as: 'user', comment: 'Post author' }) user: UserInfoDto;

TypeIs.QUERY

TypeIs.QUERY(options: { query: (props: { user?: any; association?: string }) => string; type: () => TypeIsData; })
항목
SequelizeSequelize.literal(...) 속성 항목 생성
Swaggertype TypeIs 함수 자체의 Swagger 출력에 위임
fixValuetype TypeIs 함수 자체의 fixValue에 위임

QueryOptions

interface QueryOptions extends SchemaOptions { query: (association: string, user?: any) => string; }

원시 SQL 표현식이 필요한 계산 컬럼에 QUERY를 사용합니다. query 함수는 현재 association 경로와 JWT 페이로드의 user 객체를 받습니다.

@TypeIs.QUERY({ query: ({ association }) => `(SELECT COUNT(*) FROM posts WHERE posts.user_id = \`${association}\`.\`id\`)`, type: () => TypeIs.INT(), }) post_count: number;

TypeIs.ARRAY

TypeIs.ARRAY(options: DtoOrTypeIs)

DtoOrTypeIstypeof ExtendableDto | (() => TypeIsData)입니다. 자세한 설명은 @Dto 데코레이터 — DtoOrTypeIs를 참조하세요.

항목
Sequelize컬럼 매핑 없음
Swagger{ type: 'array', items: ... }로 네임드 스키마 컴포넌트에 등록
fixValue값이 문자열이면 JSON.parse 시도; 그렇지 않으면 그대로 반환
// DTO 클래스 사용 response: TypeIs.ARRAY(UserInfoDto) // 기본 TypeIs 사용 response: TypeIs.ARRAY(TypeIs.INT()) TypeIs.ARRAY(TypeIs.STRING())

관련 항목

Last updated on