사람함께에이전트▾
사람 — 직접 정하고 책임지는 비즈니스 규칙과 흐름. 직접 읽어보세요.
함께 — 개념은 알아두고, 세부 규칙은 에이전트가 따릅니다.
에이전트 — 에이전트가 따르는 규칙과 레퍼런스. 필요할 때 찾아보세요.
모듈 규칙▾
스칼라 타입
스칼라 타입은 GraphQL과 MongoDB 스키마에서 사용되는 기본 데이터 타입입니다. Akan.js는 GraphQL 스칼라에 매핑되는 미리 정의된 스칼라 타입 세트를 제공하며, 타입 안전한 모델 정의를 위해 프레임워크 전반에서 사용됩니다.
Supported Scalar Types
📦@akanjs/base에서 import
import { ID, Int, Float, Upload, JSON } from "@akanjs/base";스칼라 타입 레퍼런스 테이블
모든 스칼라 타입의 GraphQL 매핑, MongoDB 타입, 기본값, 사용 예시를 포함한 전체 레퍼런스입니다.
| 타입 | GraphQL | MongoDB | 기본값 | 예시 값 |
|---|---|---|---|---|
String | String | String | "" | "Hello World" |
Boolean | Boolean | Boolean | false | true |
Date | Date (custom) | Date | dayjs(new Date(-1)) | "2024-01-15T09:30:00Z" |
ID | ID | ObjectId | null | "1234567890abcdef12345678" |
Int | Int | Number | 0 | 42 |
Float | Float | Number | 0 | 3.14159 |
Upload | Upload (GraphQL Upload) | - | - | FileUpload stream |
JSON | JSON (custom) | Mixed | {} | { "key": "value" } |
Map | JSON | Map | {} | { "a": 1, "b": 2 } |


파란색 타입(String, Boolean, Date)은 JavaScript 내장 타입입니다. 보라색 타입(ID, Int, Float, Upload, JSON)은 import가 필요한 Akan.js 커스텀 클래스입니다.
constant.ts 스칼라
스칼라 타입은 constant.ts 파일에서 모델 필드 타입을 정의하는 데 사용됩니다. 각 스칼라 타입이 사용되는 실제 예시입니다:
String - 텍스트 데이터
String Usage
Boolean - 참/거짓
Boolean Usage
Date - 날짜와 시간
Date Usage
Int & Float - 숫자
Int & Float Usage
ID - MongoDB ObjectId
ID Usage
JSON - 임의 데이터
JSON Usage
전체 모델 예제
모델 정의에서 다양한 스칼라 타입이 함께 사용되는 전체 예제입니다:
article.constant.ts
💡사용된 스칼라 타입
- String: title, slug
- Boolean: isPublic, isFeatured
- Int: viewCount, likeCount, commentCount
- Float: rating
- Date: publishedAt, lastEditedAt
- ID: authorId, tagIds
- JSON: content, seoMeta
스칼라 모범 사례
1️⃣개수와 수량에는 Int 사용
개수, 수량, ID와 같은 정수에는 Float 대신 Int를 사용하세요. 더 나은 성능을 제공하고 부동소수점 문제를 방지합니다.
2️⃣Date 기본값에는 dayjs() 사용
Date 기본값에는 항상 함수를 사용하세요: { default: () => dayjs() }. 정적 기본값은 생성 시간이 아닌 빌드 시간을 캡처합니다.
3️⃣문서 참조에는 ID 사용
다른 MongoDB 문서에 대한 참조를 저장해야 할 때 ID 타입을 사용하세요. 데이터베이스에서 자동으로 ObjectId로 변환됩니다.
4️⃣유연한 콘텐츠에는 JSON 사용
리치 텍스트 콘텐츠(TipTap 에디터), 유연한 메타데이터, 설정 객체에는 JSON 타입을 사용하세요. 구조화된 데이터에는 사용을 피하고 대신 적절한 필드를 정의하세요.
🎉 학습한 내용:
- ✓ 9가지 스칼라 타입: String, Boolean, Date, ID, Int, Float, Upload, JSON, Map
- ✓ @akanjs/base의 커스텀 스칼라 클래스 (ID, Int, Float, Upload, JSON)
- ✓ 각 스칼라의 GraphQL과 MongoDB 타입 매핑
- ✓ constant.ts 모델 정의에서의 실용적인 사용 패턴