이전에는 쉽게
Ottoman을 사용하여 Node.js 및 Couchbase 앱 개발하기
를 소개합니다. 이 게시물은 Ottoman이 어떤 일을 할 수 있는지, 그리고 여러분이 어떻게
는 몽구스가 몽고DB로 할 수 있는 일과 비교할 수 있습니다.

이번에는 한 걸음 더 나아가 Ottoman을 빛나게 하는 몇 가지 사용 사례를 살펴보겠습니다.

Couchbase용 Node.js SDK에는 문서 작업을 위한 다양한 방법이 있습니다. CRUD 작업, N1QL 쿼리, Couchbase 보기, 이러한
는 모두 사용하기에 좋은 기능이지만 데이터가 정말 거칠어지면 어떻게 될까요? 거친 데이터란 참조된 문서가 있는 문서를 의미합니다.
관계와 복잡한 구조가 필요합니다. 카우치베이스 뷰와 CRUD 작업을 사용할 수 있지만 관계가 복잡한 경우에는
에는 데이터 조작을 위한 많은 Node.js 코드가 있을 것입니다. N1QL 쿼리를 사용할 수도 있지만, 관계가 복잡하면 다음과 같이 됩니다.
를 사용하면 조인이 많은 복잡한 쿼리가 남게 됩니다. 어떻게 하시나요?

몇 가지 모델링 예시

다음과 같은 문서 모델로 작업한다고 가정해 보겠습니다. 이 애플리케이션이 일종의 프로젝트 관리 애플리케이션이라고 가정해 보겠습니다.
적용.

프로젝트 모델

프로젝트를 만들려면 프로젝트 자체에 대한 정보뿐만 아니라 프로젝트에 참여하는 사람에 대한 정보도 필요합니다. 프로젝트의
오스만 모델을 샘플로 사용합니다:

위 모델에서 소유자 라는 다른 오스만 모델입니다. 사용자하지만 사용자
배열의 사용자 모델입니다.

사용자 모델

프로젝트 모델이 준비되면 Ottoman에서 사용자 모델을 정의해야 합니다. 다음과 같은 형태가 될 수 있습니다:

위의 사용자 모델은 표준 문자열 데이터일 뿐입니다. 프로젝트 모델에서 보았던 것처럼 다른 모델에 대한 참조가 없습니다. 이제 우리는
이 두 모델을 가장 적합한 방식으로 쿼리하는 것에 대해 걱정할 필요가 없습니다.

오스만으로 심층 쿼리하기

애플리케이션 내에서 프로젝트를 쿼리하고 싶다고 가정해 보겠습니다. 이 쿼리는 일반적으로 다음과 같은 형태입니다:

이 쿼리의 결과는 다음과 같이 표시될 수 있습니다:

무슨 문제인가요? 쿼리가 아주 적은 양의 데이터만 로드했습니다. 예를 들어 실제 사용자 정보는 로드되지 않았습니다,
해당 사용자 문서에 대한 참조만 표시합니다.

그렇다면 다른 문서에 대한 심층 쿼리는 어떻게 할 수 있을까요? 이 쿼리 수정본을 살펴보세요:

다음 사용법에 유의하세요. {load: ["users"]} 로 설정합니다. 즉, 배열의 모든 사용자 모델을 로드하고 싶다는 뜻입니다.
를 반환합니다. 소유자 문서도 로드하려면 어떻게 해야 할까요? 다음과 같이 할 수 있습니다.
{load: ["users", "owner"]} 를 클릭하여 로드할 수도 있습니다.

오스만 모델 복잡하게 만들기

이제 데이터 모델을 조금 변경해 보겠습니다. 이제 프로젝트 오스만 모델이 다음과 같이 보인다고 가정해 보겠습니다:

이제 우리는 오스만 모델 배열 대신 오스만 모델을 포함하는 오브젝트 배열로 작업하고 있습니다.

심층 오스만 쿼리 변경

데이터 모델을 변경하면 쿼리도 변경됩니다. 다음과 같이 하는 것은 말이 되지 않습니다. {load: ["comments"]} 왜냐하면
댓글 는 오스만 모델이 아닙니다. 로드할 것이 없습니다. 대신 쿼리를 다음과 같이 변경해야 합니다:

다음 사용법에 유의하세요. comments[*].user 를 추가합니다. 위의 모든 객체 요소에 존재하는 사용자 모델을 로드하고 있습니다.
배열입니다.

결론

방금 단일 쿼리 내에서 하위 모델을 모두 로드하는 방법을 살펴보았습니다. N1QL 쿼리를 사용하면 매우 가능하지만, 이 경우 몇 가지
JOIN 문을 사용하여 작업을 완료할 수 있습니다. 선호도에 따라 다르지만 ODM 방식을 선호한다면 Ottoman
load 옵션을 선택하는 것이 좋습니다.

이에 대한 전체 작동 예는 다음 문서에서 확인할 수 있습니다. 규정 준수 GitHub 프로젝트 as
뿐만 아니라 웨비나 시리즈 풀 스택 개발에서 수행한 작업입니다.

작성자

게시자 Nic Raboy, 개발자 옹호자, Couchbase

닉 라보이는 최신 웹 및 모바일 개발 기술을 옹호하는 사람입니다. 그는 Java, JavaScript, Golang 및 Angular, NativeScript, Apache Cordova와 같은 다양한 프레임워크에 대한 경험이 있습니다. Nic은 웹 및 모바일 개발을 보다 쉽게 이해할 수 있도록 자신의 개발 경험에 대해 글을 쓰고 있습니다.

댓글 남기기