Skip to Content

TypeIs 관계 타입

FOREIGNKEYBELONGSTO는 엔티티 간 관계를 정의하는 @asapjs/sequelize 전용 타입입니다. registerSequelizeTypes()를 통해 @asapjs/schema의 TypeIs에 동적 등록되며, sequelize-typescript의 연관 관계 API와 통합됩니다. 엔티티 클래스에서만 사용되며 DTO와 라우트 옵션에서는 사용할 수 없습니다.

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

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

심볼Sequelize 동작엔티티DTO라우트
TypeIs.FOREIGNKEYaddForeignKey + 정수 컬럼OXX
TypeIs.BELONGSTOaddAssociation (BelongsTo)OXX

TypeIs.FOREIGNKEY

TypeIs.FOREIGNKEY(options: { table: () => typeof Model; comment?: string; [key: string]: any })
항목
Sequelizesequelize-typescriptaddForeignKey 호출; extraData에 타입이 없으면 기본값으로 TypeIs.INT() 사용
SwaggerSwagger 스키마에 포함되지 않음
fixValue없음

ForeignKeyOptions

interface ForeignKeyOptions extends SchemaOptions { references: { model: string; key: string; }; onDelete?: 'CASCADE' | 'SET NULL' | 'NO ACTION' | 'RESTRICT'; onUpdate?: 'CASCADE' | 'SET NULL' | 'NO ACTION' | 'RESTRICT'; }

객체 인자로 table과 추가 컬럼 옵션을 전달합니다. 모듈 평가 시 순환 임포트 문제를 피하기 위해 table은 반드시 썽크(() => Model) 형태여야 합니다:

@TypeIs.FOREIGNKEY({ table: () => UsersTable, comment: '작성자 ID' }) user_id: number;

TypeIs.BELONGSTO

TypeIs.BELONGSTO(associatedClassGetter: () => typeof Model, optionsOrForeignKey?: string | AssociationOptions)
항목
SequelizeBelongsToAssociation으로 addAssociation 호출; as는 기본적으로 프로퍼티 이름 사용
SwaggerSwagger 스키마에 포함되지 않음
fixValue없음

BelongsToOptions

interface BelongsToOptions extends SchemaOptions { target: any; foreignKey?: string; as?: string; }

두 번째 인수는 외래 키 문자열이거나 전체 AssociationOptions 객체입니다. 옵션에 as가 없으면 프로퍼티 이름이 사용됩니다.


함께 사용하기

FOREIGNKEY는 정수 컬럼 + FK 제약을 생성하고, BELONGSTO는 Sequelize 연관 관계를 등록합니다. 일반적으로 엔티티에서 함께 선언합니다:

import { Model } from 'sequelize-typescript'; import { Table, TypeIs } from '@asapjs/sequelize'; import UsersTable from '../../../user/domain/entity/UsersTable'; @Table({ tableName: 'posts', timestamps: true, }) export default class PostsTable extends Model { @TypeIs.INT({ primaryKey: true, autoIncrement: true, comment: 'Post ID' }) id: number; @TypeIs.STRING({ comment: 'Post title' }) title: string; @TypeIs.TEXT({ comment: 'Post content' }) content: string; // 외래 키 컬럼 — 정수 컬럼 생성 및 FK 제약 등록 @TypeIs.FOREIGNKEY({ table: () => UsersTable, comment: 'Author user ID' }) user_id: number; // 연관 — 컬럼 없음, BelongsTo 관계 등록 @TypeIs.BELONGSTO(() => UsersTable, 'user_id') user: UsersTable; @TypeIs.DATETIME({ comment: 'Created at' }) created_at: Date; @TypeIs.DATETIME({ comment: 'Updated at' }) updated_at: Date; }

DTO에서 이 관계 데이터를 포함하려면 TypeIs.DTO를 사용합니다. as 값은 BELONGSTO 프로퍼티 이름과 일치해야 합니다:

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

관련 항목

Last updated on