필드 유형 참조
EmDash는 콘텐츠 스키마를 정의하기 위해 14가지 필드 유형을 지원합니다. 각 유형은 SQLite 열 유형에 매핑되며 적절한 관리자 UI를 제공합니다.
| 유형 | SQLite 열 | 설명 |
|---|---|---|
string | TEXT | 짧은 텍스트 입력 |
text | TEXT | 여러 줄 텍스트 |
number | REAL | 소수점 숫자 |
integer | INTEGER | 정수 |
boolean | INTEGER | 참/거짓 |
datetime | TEXT | 날짜와 시간 |
select | TEXT | 옵션 중 단일 선택 |
multiSelect | JSON | 다중 선택 |
portableText | JSON | 리치 텍스트 콘텐츠 |
image | TEXT | 이미지 참조 |
file | TEXT | 파일 참조 |
reference | TEXT | 다른 항목에 대한 참조 |
json | JSON | 임의의 JSON 데이터 |
slug | TEXT | URL-안전 식별자 |
텍스트 유형
섹션 제목: “텍스트 유형”string
섹션 제목: “string”짧은, 한 줄 텍스트입니다. 제목, 이름, 짧은 값에 사용합니다.
{ slug: "title", label: "Title", type: "string", required: true, validation: { minLength: 1, maxLength: 200, },}유효성 검사 옵션:
minLength— 최소 문자 수maxLength— 최대 문자 수pattern— 일치시킬 정규식 패턴
위젯 옵션:
- 특정 없음
text
섹션 제목: “text”여러 줄 일반 텍스트입니다. 설명, 발췌문, 더 긴 일반 텍스트에 사용합니다.
{ slug: "excerpt", label: "Excerpt", type: "text", options: { rows: 3, },}유효성 검사 옵션:
minLength— 최소 문자 수maxLength— 최대 문자 수
위젯 옵션:
rows— 텍스트 영역의 행 수 (기본값: 3)
slug
섹션 제목: “slug”URL-안전 식별자입니다. 다른 필드에서 자동 생성되거나 수동으로 입력됩니다.
{ slug: "slug", label: "URL Slug", type: "slug", required: true, unique: true,}슬러그는 자동으로 정리됩니다: 소문자로 변환, 공백을 하이픈으로 대체, 특수 문자 제거.
숫자 유형
섹션 제목: “숫자 유형”number
섹션 제목: “number”소수점 숫자입니다. 가격, 평점, 측정값에 사용합니다.
{ slug: "price", label: "Price", type: "number", required: true, validation: { min: 0, max: 999999.99, },}유효성 검사 옵션:
min— 최소값max— 최대값
SQLite REAL(64비트 부동 소수점)로 저장됩니다.
integer
섹션 제목: “integer”정수입니다. 수량, 개수, 순서 값에 사용합니다.
{ slug: "quantity", label: "Quantity", type: "integer", defaultValue: 1, validation: { min: 0, max: 1000, },}유효성 검사 옵션:
min— 최소값max— 최대값
SQLite INTEGER로 저장됩니다.
boolean
섹션 제목: “boolean”참 또는 거짓입니다. 토글과 플래그에 사용합니다.
{ slug: "featured", label: "Featured", type: "boolean", defaultValue: false,}SQLite INTEGER(0 또는 1)로 저장됩니다.
날짜와 시간
섹션 제목: “날짜와 시간”datetime
섹션 제목: “datetime”날짜와 시간 값입니다. ISO 8601 형식으로 저장됩니다.
{ slug: "publishedAt", label: "Published At", type: "datetime",}유효성 검사 옵션:
min— 최소 날짜 (ISO 문자열)max— 최대 날짜 (ISO 문자열)
저장 형식: 2025-01-24T12:00:00.000Z
선택 유형
섹션 제목: “선택 유형”select
섹션 제목: “select”미리 정의된 옵션 중 단일 선택입니다.
{ slug: "status", label: "Status", type: "select", required: true, defaultValue: "draft", validation: { options: ["draft", "published", "archived"], },}유효성 검사 옵션:
options— 허용된 값의 배열 (필수)
선택된 값을 포함하는 TEXT로 저장됩니다.
multiSelect
섹션 제목: “multiSelect”미리 정의된 옵션 중 다중 선택입니다.
{ slug: "tags", label: "Tags", type: "multiSelect", validation: { options: ["news", "tutorial", "review", "opinion"], },}유효성 검사 옵션:
options— 허용된 값의 배열 (필수)
JSON 배열로 저장됩니다: ["news", "tutorial"]
리치 콘텐츠
섹션 제목: “리치 콘텐츠”portableText
섹션 제목: “portableText”Portable Text 형식을 사용하는 리치 텍스트 콘텐츠입니다. 제목, 목록, 링크, 이미지 및 사용자 정의 블록을 지원합니다.
{ slug: "content", label: "Content", type: "portableText", required: true,}Portable Text 블록의 JSON 배열로 저장됩니다:
[ { "_type": "block", "style": "normal", "children": [{ "_type": "span", "text": "Hello world" }] }]플러그인은 사용자 정의 블록 유형(임베드, 위젯 등)을 편집기에 추가할 수 있습니다. 이들은 슬래시 명령 메뉴에 나타나며 사이트에서 자동으로 렌더링됩니다. 플러그인 생성 — Portable Text 블록 유형을 참조하세요.
미디어 유형
섹션 제목: “미디어 유형”image
섹션 제목: “image”업로드된 이미지에 대한 참조입니다. 크기와 대체 텍스트와 같은 메타데이터를 포함합니다.
{ slug: "featuredImage", label: "Featured Image", type: "image", options: { showPreview: true, },}위젯 옵션:
showPreview— 관리자에서 이미지 미리보기 표시 (기본값: true)
저장된 값:
{ "id": "01HXK5MZSN...", "url": "https://cdn.example.com/image.jpg", "alt": "Description", "width": 1920, "height": 1080}file
섹션 제목: “file”업로드된 파일(문서, PDF 등)에 대한 참조입니다.
{ slug: "document", label: "Document", type: "file",}저장된 값:
{ "id": "01HXK5MZSN...", "url": "https://cdn.example.com/doc.pdf", "filename": "report.pdf", "mimeType": "application/pdf", "size": 102400}관계형 유형
섹션 제목: “관계형 유형”reference
섹션 제목: “reference”다른 콘텐츠 항목에 대한 참조입니다.
{ slug: "author", label: "Author", type: "reference", required: true, options: { collection: "authors", },}위젯 옵션:
collection— 대상 컬렉션 슬러그 (필수)allowMultiple— 다중 참조 허용 (기본값: false)
단일 참조 저장 값:
"01HXK5MZSN..."다중 참조 저장 값:
["01HXK5MZSN...", "01HXK6NATS..."]유연한 유형
섹션 제목: “유연한 유형”json
섹션 제목: “json”임의의 JSON 데이터입니다. 복잡한 중첩 구조, 타사 통합 또는 고정 스키마가 없는 데이터에 사용합니다.
{ slug: "metadata", label: "Metadata", type: "json",}SQLite JSON 열에 그대로 저장됩니다.
필드 속성
섹션 제목: “필드 속성”모든 필드는 다음과 같은 공통 속성을 지원합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
slug | string | 고유 식별자 (필수) |
label | string | 표시 이름 (필수) |
type | FieldType | 필드 유형 (필수) |
required | boolean | 값 필수 여부 (기본값: false) |
unique | boolean | 고유성 강제 (기본값: false) |
defaultValue | unknown | 새 항목에 대한 기본값 |
validation | object | 유형별 유효성 검사 규칙 |
widget | string | 사용자 정의 위젯 재정의 |
options | object | 위젯 구성 |
sortOrder | number | 관리자에서의 표시 순서 |
예약된 필드 슬러그
섹션 제목: “예약된 필드 슬러그”다음 슬러그는 예약되어 사용할 수 없습니다:
idslugstatusauthor_idcreated_atupdated_atpublished_atdeleted_atversion
TypeScript 유형
섹션 제목: “TypeScript 유형”프로그래밍 방식 사용을 위한 필드 유형 가져오기:
import type { FieldType, Field, CreateFieldInput } from "emdash";
const fieldTypes: FieldType[] = [ "string", "text", "number", "integer", "boolean", "datetime", "select", "multiSelect", "portableText", "image", "file", "reference", "json", "slug",];