관계는 두 컬렉션을 조인하고 그 항목 간 링크를 소유합니다. 게시물의 작성자, 레슨의 챕터, 상품의 관련 상품 등입니다. reference 필드는 한쪽 끝에서 관계를 보고 에디터에게 그에 대한 피커를 제공합니다.
관계가 링크를 소유하므로 두 컬렉션 모두 같은 집합을 편집할 수 있습니다. 슬러그, 각 쪽의 이름, 각 쪽이 연결할 수 있는 항목 수 한도는 관계에 속하므로 posts의 필드와 authors의 필드가 같은 링크에 대해 어긋날 수 없습니다. EmDash는 링크를 두 컬렉션 테이블 밖에, 각 항목의 번역 그룹으로 키를 잡아 저장하므로 항목의 모든 번역이 하나의 선택을 공유합니다.
끝은 연결하는 쪽과 연결되는 쪽입니다. posts에서 authors로의 관계에서 posts의 필드는 게시물이 연결하는 작성자를 고르고, authors의 필드는 그것에 연결하는 게시물을 나열합니다.
관계 추가
두 콘텐츠 유형이 모두 있어야 조인할 수 있습니다.
-
관리자에서 Content Types를 연 다음 Relations를 엽니다.
-
New Relation을 클릭한 뒤 두 콘텐츠 유형을 고릅니다. Links from은 고르는 쪽, Links to는 고름을 받는 쪽입니다.
-
Roles 아래에서 각 쪽을 복수형과 단수형으로 이름 짓습니다. 이름은 콘텐츠 유형에서 채워지며 편집할 수 있습니다. 참조 필드는 고르는 쪽의 이름을 가져갑니다.
-
Slug를 확인합니다. 이름을 따르며 참조 필드가 저장합니다.
-
How many 아래에서 각 쪽의 한도를 설정합니다. One, Any number, 또는 At most와 지정하는 Maximum. 관계에 묶인 두 필드가 이 한도를 공유합니다.
-
관계를 만듭니다.
두 콘텐츠 유형과 슬러그는 관계가 존재하면 고정됩니다. 각 링크는 관계로 키가 잡히므로 끝을 옮기면 저장된 링크가 잘못된 유형의 콘텐츠를 가리킵니다. 다른 콘텐츠 유형을 조인하려면 다른 관계를 만드세요.
이름과 한도는 계속 편집할 수 있습니다. 한도를 낮춰도 기존 링크는 그대로 두고, 새 한도를 넘는 선택의 항목을 저장하면 선택이 맞을 때까지 거부됩니다.
콘텐츠 유형 자체 페이지는 필드 아래 Relations 패널에 자신이 끝인 관계를 나열합니다. 새로 만들기, 편집, 삭제는 거기에서도 같습니다.
참조 필드 추가
-
Content Types에서 콘텐츠 유형을 열고 Add Field를 클릭합니다.
-
Reference를 고릅니다.
-
묶을 관계를 선택합니다. 마지막 선택 Create relation은 같은 대화상자에서 관계 양식을 열고 새 관계가 선택된 채로 돌아옵니다. 아직 관계가 없는 사이트에서는 유일한 선택입니다.
-
두 끝이 같은 콘텐츠 유형인 관계에서는 This field picks를 Entries this one links to 또는 Entries that link to this one으로 설정합니다. 그 외에는 필드 자체의 콘텐츠 유형이 끝을 정하고, 필드는 다른 쪽에서 항목을 고릅니다.
-
레이블과 슬러그를 확인합니다. 레이블은 필드가 고르는 쪽에서 오며, 나중에 필드 이름을 바꾸면 관계의 그 쪽도 바뀝니다.
-
필드를 추가합니다.
한 관계는 끝마다 하나의 필드를 받으므로 같은 끝에 두 번째 필드는 거부됩니다. 같은 링크를 쓰는 두 피커는 정의된 결과가 없습니다. 두 콘텐츠 유형이 같은 링크 집합을 편집하게 하려면 같은 관계의 각 끝에 필드를 추가하세요.
참조 필드는 자체 열을 저장하지 않으므로 searchable 또는 indexed로 표시할 수 없습니다. 콘텐츠 목록 필터와 사이트 검색은 다루지 않습니다.
에디터에서 항목 고르기
필드는 항목 에디터에서 피커로 렌더됩니다. Add reference는 참조된 콘텐츠 유형에 대한 검색을 엽니다. 한 항목으로 제한된 필드는 하나를 보유하면 Replace reference를 제공합니다. 고른 각 항목은 새 탭에서 열거나, 제거하거나, 연결되는 쪽을 고르는 필드에서는 위아래로 옮겨 템플릿이 읽는 순서를 정할 수 있습니다. 연결하는 쪽을 고르는 필드는 이것에 연결하는 항목을 나열하며 고유 순서는 없습니다.
선택은 항목과 함께 한 요청으로 저장됩니다. 개정을 유지하는 컬렉션에서는 게시된 항목의 선택 변경이 항목의 다른 대기 편집과 함께 초안에 스테이징됩니다. 항목이 게시될 때 라이브가 되고 초안과 함께 버려집니다. 항목 미리보기는 스테이징된 선택을 보여 줍니다.
항목에 무엇이 연결되는지 보기
관계의 다른 끝에 참조 필드를 추가하세요. 연결하는 쪽을 고르는 필드는 이것에 연결하는 항목을 나열하므로, 페이지를 편집하는 작성자는 그것을 가리키는 게시물을 보고 어느 끝에서든 그 집합을 바꿀 수 있습니다.
템플릿에서 링크 읽기
참조 필드는 항목 data의 일부가 아닙니다. 페이지가 렌더하는 필드를 references 옵션에 이름 지으면 각각 항목 페이지로 돌아옵니다.
---
import { getEmDashEntry } from "emdash";
const { entry: post } = await getEmDashEntry("posts", Astro.params.slug, {
references: { author: true },
});
const author = post?.references?.author.entries[0];
---
<h1>{post?.data.title}</h1>
{author && <p>By {author.data.name}</p>}
참조 필드 읽기는 페이지네이션, 미리보기 동작, 생성된 타입, 각 호출의 쿼리 비용을 다룹니다.
시드에서 관계 선언
시드 파일은 최상위 relations 배열에 관계를 선언하고, 참조 필드는 슬러그로 하나에 묶입니다. 대신 targetCollection을 이름 짓는 필드는 그에 대한 관계가 만들어집니다. emdash export-seed는 사이트의 관계를 내보내고, --with-content는 각 항목의 링크를 내보내므로 사이트의 선택이 내보내기와 재적용을 견딥니다.
필드 또는 관계 삭제
참조 필드를 삭제하면 사용하는 관계도 삭제할지 제안하며, 함께 가져가는 것을 이름 짓습니다. 관계, 그 아래 저장된 링크, 다른 콘텐츠 유형의 필드입니다. 체크박스를 해제하면 관계와 링크를 유지합니다. 예를 들어 다른 끝의 필드가 아직 사용하는 경우입니다.
관계를 삭제하면 항상 그 링크와 묶인 필드가 제거됩니다. 콘텐츠 유형을 삭제하면 그것이 끝인 모든 관계와, 그것을 보는 다른 콘텐츠 유형의 필드가 제거됩니다. 확인에 나열됩니다.
관계가 없는 필드 묶기
관계가 없는 참조 필드는 항목을 고르는 대신 텍스트 상자에 항목 ID 하나를 보유합니다. 관계를 주면 피커가 됩니다.
-
Content Types에서 콘텐츠 유형을 열고 필드 행의 편집 동작을 클릭합니다.
-
Referenced collection을 고르고, 필드가 둘 이상의 항목을 보유해야 하면 Allow multiple references를 설정합니다.
-
필드를 저장합니다.
EmDash는 필드와 콘텐츠 유형 이름의 관계를 만들고, 필드 열이 보유한 항목 ID를 링크로 복사하며, 필드의 searchable 및 indexed 플래그를 지워 콘텐츠 목록 필터와 사이트 검색이 더 이상 다루지 않게 합니다. 관계는 반대쪽에서 몇 개의 항목이 되돌아오는지에 한도가 없습니다. 열은 그대로 두고 쓰기가 멈춥니다. Relations 페이지에서 관계를 편집해 쪽 이름을 바꾸거나 두 번째 한도를 설정하세요.
이전 릴리스에서 업데이트된 사이트는 이 상태의 필드를 가질 수 있습니다. 참조 필드는 관계에 묶임에서 업데이트가 무엇을 묶고 무엇을 남겨 두는지 확인하세요.