이 게시물은 카우치베이스 모바일 2.0의 새로운 쿼리 API를 탐색하기 위해 Xcode 플레이그라운드를 사용하는 단계별 가이드입니다. The 카우치베이스 라이트 2.0 릴리스 에 기반한 간소화된 쿼리 API를 도입합니다. N1QL는 JSON용 SQL을 확장하는 Couchbase의 선언적 쿼리 언어입니다. SQLite에 익숙하신 분들은 새로운 쿼리 빌더 인터페이스입니다. 쿼리 API는 유창한 API 디자인 패턴메서드 캐스케이딩을 사용하여 도메인 특정 언어처럼 읽습니다. (DSL). 따라서 인터페이스가 매우 직관적이고 이해하기 쉽습니다.
Xcode Playground는 신속한 코드를 즉시 작성하고 실행할 수 있는 대화형 환경으로, 본격적인 Xcode 앱 프로젝트를 만들지 않고도 API를 편리하게 학습하고 탐색할 수 있는 방법을 제공합니다. 이는 쿠크베이스 라이트 2.0 API를 탐색하기 위한 완벽한 사용 사례입니다. 여기서는 플레이그라운드를 만들지 않을 것입니다. 여기서는 쿼리 API 테스트를 위해 특별히 구성한 놀이터를 사용하겠습니다.
Xcode 플레이그라운드에서는 쿼리를 신속하게 보여 주지만, 언어별 관용구를 제외하고는 다양한 Couchbase Lite 플랫폼에서 QueryBuilder API의 통합된 특성을 고려할 때 Couchbase Lite에서 지원되는 다른 플랫폼 언어로 쿼리를 쉽게 번역할 수 있어야 합니다. 따라서 다음과 같은 경우에도 not Swift 개발자라면 API 탐색을 위해 Xcode 플레이그라운드를 활용할 수 있어야 합니다. 이 게시물은 Swift 또는 iOS 개발에 익숙하다는 가정을 전제로 하지 않으므로 iOS 개발 초보자라도 따라할 수 있을 것입니다. 물론 Mac이 필요합니다!
쿼리 빌더 API에 대한 자세한 내용은 다음에서 확인할 수 있습니다. API 참조 가이드.
추천 읽기
이 블로그 게시물에서는 다양한 쿼리 기능에 대해 자세히 설명합니다.
– 쿼리 API의 기본 사항
– 배열 컬렉션 쿼리
– 전체 텍스트 검색 기능.
– 기본 조인 쿼리
배경
1.x 버전의 Couchbase Mobile을 사용 중이라면 다음과 같은 내용을 잘 알고 계실 것입니다. 맵 보기 를 사용하여 인덱스와 쿼리를 만들 수 있습니다. 2.0에서는 더 이상 뷰와 맵 함수를 만들 필요가 없습니다! 대신, 간단한 인터페이스를 통해 인덱스를 만들고 쿼리 빌더 인터페이스를 사용해 쿼리를 구성할 수 있습니다. 새로운 쿼리 인터페이스는 사용하기 더 간단하고 훨씬 더 강력합니다.
TL;DR
원하는 경우 이 블로그 게시물에서 설명하는 모든 내용을 동영상으로 녹화해 보세요.
사전 요구 사항
- Xcode 8.3.3+ , 최신 버전은 다음에서 다운로드할 수 있습니다. Mac App Store
플레이그라운드는 Swift 3.1+와 호환됩니다.
설치
- 복제 카우치베이스-라이트-ios-api-플레이그라운드 터미널에서 다음 명령을 실행하여 깃허브의 리포지토리를 생성합니다.
1 |
$ git 복제 https://github.com/couchbaselabs/couchbase-lite-ios-api-playground |
- 우리는 다음을 사용할 것입니다. 카르타고 를 클릭하여 CouchbaseLite를 다운로드하고 설치하세요. Carthage는 Cocoa 애플리케이션을 위한 종속성 관리 시스템입니다. iOS용 카우치베이스 라이트는 다음과 같습니다. 분산 를 통해 다운로드하거나 저희의 다운로드 페이지로 이동합니다. 여기서는 카르타고를 사용하겠습니다.
카르타고가 없는 경우 다음을 따르세요. 지침 를 클릭하여 MacOS에 카르타고를 설치합니다. - 터미널 창에 다음 명령을 입력하여 카티지 설치를 확인합니다. 설치된 카르타고 버전이 표시됩니다.
1 |
$ 카르타고 버전 |
- 파일이 들어 있는 폴더로 전환합니다. 카트 파일. 이것은 카르타고 폴더에 저장합니다. Cartfile은 프로젝트 종속성을 지정하며, 이 경우 Couchbase Lite 프레임워크입니다.
1 |
$ cd /경로/에/카우치베이스-lite-ios-api-놀이터/카르타고 |
- Carthage를 사용하여 Couchbase Lite를 다운로드합니다. 사용되는 Couchbase Lite의 버전은 카트 파일. 우리는
--구축 없음
옵션을 설정하여 카티지가 소스를 빌드하지 않고 지정된 GitHub 리포지토리의 파일만 체크아웃하도록 지정할 수 있습니다. 이렇게 하면 시간이 절약됩니다.
1 |
$ 카르타고 업데이트 -플랫폼 ios -아니요-빌드 |
- 터미널에서 다음 명령을 실행하여 Couchbase Lite 프레임워크가 성공적으로 체크아웃되었는지 확인합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ cd /경로/에/카우치베이스-lite-ios-api-놀이터/카르타고 $ ls -l 카르타고/결제/카우치베이스-lite-ios/ 합계 24 -rw-r-r- 1 priya.라자고팔 141224203 957 4월 11 17:06 카우치베이스 라이트.podspec drwxr-xr-x@ 6 priya.라자고팔 141224203 192 4월 11 17:09 카우치베이스 라이트.xcodeproj -rw-r-r- 1 priya.라자고팔 141224203 987 4월 11 17:06 카우치베이스라이트스위프트.podspec -rw-r-r- 1 priya.라자고팔 141224203 10273 4월 11 17:06 라이선스 drwxr-xr-x 117 priya.라자고팔 141224203 3744 4월 11 17:06 목표-C -rw-r-r- 1 priya.라자고팔 141224203 2426 4월 11 17:06 README.md drwxr-xr-x 11 priya.라자고팔 141224203 352 4월 11 17:06 스크립트 drwxr-xr-x 70 priya.라자고팔 141224203 2240 4월 11 17:06 Swift drwxr-xr-x 4 priya.라자고팔 141224203 128 4월 11 17:06 문서 drwxr-xr-x 4 priya.라자고팔 141224203 128 4월 11 17:06 공급업체 drwxr-xr-x 13 priya.라자고팔 141224203 416 4월 11 17:06 xcconfigs |
설정
쿼리를 실행하기 위해 미리 빌드된 두 개의 Couchbase Lite 데이터베이스를 사용할 것입니다. Xcode Playground에서 이러한 데이터베이스에 액세스할 수 있으려면 해당 데이터베이스가 특별한 위치에 있어야 합니다. "공유 놀이터 데이터" 폴더 내 문서 폴더로 이동합니다.
Playground를 처음 설정할 때는 다음 단계가 필요합니다. 이후에는 다음 단계를 따라야 합니다. 다음과 같은 경우에만 데이터베이스를 변경하는 것입니다.
- Mac의 '문서' 폴더 내에 '공유 놀이터 데이터'라는 이름의 폴더를 만듭니다(폴더가 없는 경우).
1 |
$ mkdir ~/문서/공유\ 놀이터\ 데이터/ |
- 에서 가져온 "travel-sample.cblite2" 폴더를 복사합니다. 카우치베이스-라이트-ios-api-플레이그라운드 저장소를 "공유 놀이터 데이터"에 추가합니다. 이 미리 빌드된 데이터베이스는 쿼리를 테스트하는 데 사용됩니다.
1 2 |
$ cd /경로/에/카우치베이스-lite-ios-api-놀이터/ $ cp -r 여행-샘플.cblite2 ~/문서/공유\ 놀이터\ 데이터/ |
- 에서 가져온 "joindb.cblite2" 폴더 폴더를 복사합니다. 카우치베이스-라이트-ios-api-플레이그라운드 리포지토리를 "공유 놀이터 데이터"에 추가합니다. 이 미리 빌드된 데이터베이스는 조인과 관련된 쿼리를 테스트하는 데 사용됩니다.
1 2 |
$ cd /경로/에/카우치베이스-lite-ios-api-놀이터/ $ cp -r joindb.cblite2 ~/문서/공유\ 놀이터\ 데이터/ |
- 다음 명령을 사용하여 파일이 성공적으로 복사되었는지 확인합니다.
1 |
$ ls -l ~/문서/공유\ 놀이터\ 데이터/ |
프로젝트 살펴보기
이 글의 앞부분에서 Xcode Playground에는 본격적인 앱 프로젝트가 필요하지 않다고 언급했습니다. 이는 여전히 사실입니다. 그러나 우리의 경우에는 CouchbaseLite.framework
를 사용했습니다. 다른 옵션이 있을 수 있지만 제가 사용한 방법은 다음과 같은 더미 Xcode 프로젝트를 만드는 것이었습니다. CBLTestBed.xcodeproj 플레이그라운드와 CouchbaseLite.xcodeproj
.
따라서 CBLTestBed 프로젝트를 생성하면 CouchbaseLiteSwift 프레임워크를 빌드한 다음 Playground에서 임포트합니다. 이에 대해 자세히 살펴보겠습니다.
- 열기
CBLTestBed.xcodeproj
Xcode 사용
1 2 |
$ cd /경로/에/카우치베이스-lite-ios-api-놀이터/ $ 열기 CBLTestBed.xcodeproj/ |
- 다음을 확인해야 합니다.
CBLQueryPlayground.playground
그리고CouchbaseLite.xcodeproj
에 포함된CBLTestBed.xcodeproj

- 다음 사항을 살펴보겠습니다.
CBLQueryPlayground.playground
. 프로젝트 탐색기에 여러 개의 플레이그라운드 페이지가 표시될 것입니다. 어떤 플레이그라운드 페이지에서 시작해도 좋지만 "목차" 페이지부터 시작하는 것이 가장 합리적일 것입니다. 이 페이지는 "목차"이며 다른 페이지로 들어가는 진입점을 제공합니다. - 유틸리티 창에서 '문서 렌더링' 확인란을 선택하여 놀이터 페이지의 렌더링을 켭니다.
- "ToC" 페이지에서 다른 플레이그라운드 페이지로 이동할 수 있습니다. 각 플레이그라운드 페이지에는 "travel-sample.cblite" 데이터베이스 또는 "joindb.cblite" 데이터베이스에 대해 쿼리 API를 적절히 실행하는 쿼리 예제 집합이 포함되어 있습니다. '설정' 섹션에서 설명한 대로 이러한 데이터베이스는 "~/Documents/Shared\ Playground\ Data/" 폴더에 있습니다.
- 모든 Playground 페이지는 동일한 패턴을 따릅니다. 로컬 데이터베이스를 연 다음 쿼리 빌더 API를 사용하여 쿼리를 수행하는 함수를 호출합니다.
기본 구조는 다음과 같습니다 ....
1 2 3 4 5 6 7 8 9 10 |
do { // 카우치베이스 라이트 데이터베이스 열기 또는 만들기 만약 let db:데이터베이스 = 시도 createOrOpenDatabase() { let 결과1 = 시도 쿼리 문서에 대한 테스트 배열 포함(db, limit: 5) 인쇄("\n*****\nQueryForDocumentsByTestingArrayContainment에 대한 응답 : \n \(결과1)") } } catch { 인쇄 ("예외는 (error.localizedDescription)") } |
빌드 및 실행
플레이그라운드를 실행할 수 있으려면 먼저 카우치베이스라이트스위프트 프레임워크를 사용하세요. 이 작업을 수행하려면 다음을 포함하는 CBLTestBed.xcodeproj
.
- "CBLTestBed" 체계를 선택하고 시뮬레이터를 대상으로 선택합니다. 다음을 사용하여 프로젝트를 빌드합니다. Cmd-B.
- 프로젝트가 성공적으로 빌드되면 "실행" 버튼을 클릭하여 플레이그라운드를 실행할 수 있습니다.
- 결과는 출력 콘솔에 표시되어야 합니다.
- 물론 이곳은 놀이터이기 때문에 인라인으로 결과를 확인할 수도 있습니다.
다른 쿼리 옵션 살펴보기
샘플 놀이터와 함께 제공된 쿼리는 참고용으로 사용하기 위한 것입니다. 쿼리를 업데이트하여 다른 쿼리 옵션을 탐색할 수 있다는 것을 쉽게 알 수 있을 것입니다.
예를 들어 아래 예제에서 'type' 속성과 'limit' 값을 다른 값으로 변경하고 결과가 어떻게 달라지는지 확인합니다. 직접 쿼리를 추가할 수도 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
func 특정 유형의 문서에 대해 쿼리하기(_ db:데이터베이스,limit:Int = 10 ) 던지기 -> [데이터]? { let 검색 쿼리 = 쿼리 빌더 .선택(SelectResult.모두()) .에서(데이터 소스.데이터베이스(db)) .어디(표현식.속성("유형").equalTo(표현식.문자열("호텔"))) .limit(표현식.int(limit)) var 일치:[데이터] = [데이터]() do { 에 대한 행 in 시도 검색 쿼리.실행() { 일치.추가(행.toDictionary()) } } 반환 일치 } |
다음 단계
이 블로그 게시물에서는 카우치베이스 모바일 2.0의 새로운 쿼리 API를 편리하게 탐색하고 테스트할 수 있는 방법으로 Xcode 플레이그라운드를 사용하는 방법을 보여드렸습니다. 새로운 쿼리를 추가하고 싶으시면 Github PR.
질문이나 피드백이 있으면 아래에 댓글을 남기거나 트위터로 언제든지 문의해 주세요. @rajagp 또는 이메일을 보내주세요. priya.rajagopal@couchbase.com. . 카우치베이스 포럼 를 통해 질문할 수 있습니다.
의
카르타고 업데이트 -플랫폼 iOS -빌드 없음
이 작동하지 않는다면 아마도카르타고 업데이트 -플랫폼 iOS --빌드 없음
?