collection에 데이터 노출
이 페이지의 내용
개요
Atlas GraphQL API를 통해 MongoDB collection의 데이터를 클라이언트 애플리케이션에 노출할 수 있습니다. Atlas App Services는 컬렉션 스키마 를 기반으로 GraphQL 유형과 해석기를 자동으로 생성하고 모든 GraphQL 작업에 대한 컬렉션 규칙 을 적용합니다.
절차
1. collection의 역할 구성
App Services는 들어오는 모든 GraphQL 요청에 대해 컬렉션 규칙 을 적용하므로 애플리케이션에 필요한 권한이 있는 컬렉션 역할 을 하나 이상 정의해야 합니다.
모든 GraphQL 요청에는 요청을 보낸 로그인한 App Services 사용자를 식별하는 인증 토큰이 포함되어 있습니다. App Services는 GraphQL 작업에 포함된 모든 문서의 역할을 평가하고 사용자가 볼 수 있는 권한이 있는 필드와 문서만 반환합니다. App Services에서 필드를 생략하면 반환된 문서에 해당 필드의 null
값이 포함됩니다.
2. collection의 문서에 대한 스키마 정의하기
GraphQL에서는 모든 데이터가 잘 정의된 유형을 준수해야 하므로 컬렉션의 문서에 대해 스키마 정의 및 적용 을 수행해야 합니다. Atlas App Services는 컬렉션 스키마를 기반으로 컬렉션의 문서에 대한 GraphQL 유형 및 해석기 를 자동으로 생성하고 스키마가 변경될 때마다 새 유형을 다시 생성합니다.
참고
스키마 자동 생성
App Services는 collection의 기존 문서 샘플을 기반으로 collection 스키마를 생성할 수 있습니다. 기존 데이터가 없는 경우, 스키마에 포함하려는 필드의 모의 구현이 있는 새 문서를 삽입한 다음 이를 기반으로 스키마를 생성할 수 있습니다.
3. 다른 collection과의 관계 정의
collection의 각 문서를 외부 collection에 있는 하나 이상의 문서에 연결하는 관계 를 정의할 수 있습니다. 관계를 정의하는 방법을 알아보려면 관계 정의를 참조하세요 .
관계를 사용하면 GraphQL 읽기 및 쓰기 작업에서 문서를 유창하게 참고하고 쿼리할 수 있습니다. 예를 들어, 사람을 쿼리하고 동일한 people
collection에서 각 자녀에 대한 전체 문서를 포함할 수 있습니다.
query { person(query: { name: "Molly Weasley" }) { _id name age picture children { _id name age picture } } }
4. 데이터 유형 이름 지정
App Services는 컬렉션의 문서가 준수하는 데이터 유형을 기반으로 생성하는 GraphQL 유형의 이름을 지정합니다. 스키마의 title
필드를 스키마가 정의하는 데이터 유형의 이름으로 설정하여 GraphQL 유형의 이름을 구성할 수 있습니다.
title
필드를 설정할 수 있는 세 가지 상황은 다음과 같습니다.
스키마의 루트 수준에서
title
를 설정하여 컬렉션에 있는 각 문서의 유형 이름을 정의할 수 있습니다. 제목을 지정하지 않으면 App Services에서 collection 이름을 대신 사용합니다.내장된 객체 스키마에서
title
를 설정하여 내장된 객체의 유형 이름을 정의할 수 있습니다.필드 스키마에서
title
를 설정하여 관계가 정의된 필드의 유형 이름을 정의할 수 있습니다. App Services는 GraphQL에서 관계를 확인할 때 정의된 필드 이름 대신title
을(를) 사용합니다.
{ "title": "movie", "properties": { "_id": { "bsonType": "objectId" }, "title": { "bsonType": "string" }, "year": { "bsonType": "int" }, "director": { "bsonType": "int" } } }
참고
단수형 및 복수형
App Services는 각 collection에 대해 두 개의 GraphQL 쿼리 를 생성합니다.
컬렉션 에서 특정 문서 를 찾는 단수형 쿼리 입니다. 쿼리 는 스키마의
title
과 동일한 이름을 사용합니다. 스키마의title
가 복수형 명사인 경우 App Services 는 Rails ActiveSupport 굴절 규칙에 따라 단수형을 사용하려고 시도합니다.collection에 있는 모든 문서의 하위 집합을 찾는 복수형 쿼리입니다. 가능한 경우 쿼리는 단수형 쿼리 이름의 복수형을 사용합니다. App Services에서 이름을 복수형으로 변환할 수 없거나 복수형으로 지정된 이름이 단수형 이름과 동일한 경우 복수형 쿼리는 단수형 쿼리와 동일한 이름을 사용하며 끝에
"s"
을 붙입니다.
예시
laboratory.mice
collection에 대해 다음 스키마가 구성됩니다.
{ "title": "Mouse", "bsonType": "object", "properties": { "_id": { "bsonType": "objectId" }, "name": { "bsonType": "string" }, "age": { "bsonType": "int" } } }
App Services는 스키마를 기반으로 mouse
(단수) 및 mice
(복수)이라는 두 가지 쿼리를 생성합니다.
query Mice { mouse(query: { _id: "5ebe6819197003ddb1f74475" }) { name age } mice { name age } }
다음 단계
collection에 대한 스키마를 정의하면 App Services는 GraphQL API를 통해 collection의 문서를 자동으로 노출합니다. 이제 클라이언트 애플리케이션에서 연결하여 쿼리 및 변형을 실행할 수 있습니다.