이 예는 간단한 안드로이드 애플리케이션 사용자가 평점 및 이름 속성이 있는 리뷰를 Couchbase Lite 데이터베이스에 저장할 수 있습니다. 이 예시에서는 TabLayout 및 ViewPager 컴포넌트를 사용하여 각각 별도의 탭에 있는 세 가지 시나리오를 보여줍니다.
고유(첫 번째 탭): 그리고 _id 필드는 카우치베이스 라이트에서 임의로 생성됩니다. 매번 새 문서가 데이터베이스에 유지됩니다. 저장 버튼을 누릅니다. 저장된 문서는 다음과 같은 속성을 갖습니다:
1
2
3
4
5
6
7
|
{
"_id": “008c30d0-0f57-4477-8fa5-b9685f410f9e”,
"_rev": “1-38fd691714c1ed19ce48a1f4a87c20d9”,
"name": "chef123",
"rating": 4,
"type": "고유"
}
|
충돌(두 번째 탭): 그리고 _id 필드는 사용자가 텍스트 입력란에 입력한 값으로 설정됩니다. 를 누르면 저장 은 새 문서를 데이터베이스에 유지하거나 이 ID로 이미 존재하는 문서가 있는 경우 업데이트합니다.
1
2
3
4
5
6
|
{
"_id": "chef123",
"_rev": “1-38fd691714c1ed19ce48a1f4a87c20d9”,
"rating": 4,
"type": "conflict"
}
|
P2P(세 번째 탭): 텍스트 입력 필드에는 다음과 같은 형식의 대상 Couchbase Lite 또는 동기화 게이트웨이 데이터베이스의 URL을 입력합니다. http://{IP}:55000/ratingapp
.
뷰 호출기 아래에는 스위치 토글 버튼을 사용하여 원격 데이터베이스로의 연속 풀/푸시 복제를 시작/중지할 수 있습니다. 일반적으로 클라우드에서 실행 중인 동기화 게이트웨이의 URL입니다. 원격 URL은 다음에서 변경할 수 있습니다. StorageManager.java
를 동기화 게이트웨이 인스턴스에 추가합니다(아래 섹션에서 Couchbase 서버 및 동기화 게이트웨이 배포하기 참조).
마지막으로 화면 하단에 다음을 표시하는 표가 있습니다:
첫 번째 탭에는 가능한 각 값에 대한 리뷰 수가 표시됩니다. 그룹 수준을 1로 설정한 쿼리를 사용하여 동일한 등급의 문서를 집계하고 축소 기능을 사용하여 개수를 계산합니다.
뷰를 등록하는 코드는 StorageManager.java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
보기 등급보기 = 데이터베이스.getView(고유_등급_보기);
등급보기.setMapReduce(new 매퍼() {
@오버라이드
public void 지도(지도<문자열, 개체> 문서, 이미터 emitter) {
만약 (문서.get("type").같음("고유")) {
emitter.emit(문서.get("rating").toString(), null);
}
}
}, new 감속기() {
@오버라이드
public 개체 감소(목록<객체 너비=“300” 높이=“150”> 키, 목록<객체> 값, 부울 재환원) {
반환 new 정수(값.크기());
}
}, “16”);
그리고 a 라이브 쿼리 는 인스턴스화 in <강한>주요 활동.자바</강한> 에 알림 의 리사이클러 보기 어댑터 언제 의 보기 색인 has 변경됨:
<pre>
라이브 쿼리 라이브 쿼리 = storageManager.데이터베이스.getView(StorageManager.고유_등급_보기).createQuery().toLiveQuery();
라이브 쿼리.설정 그룹 수준(1);
라이브 쿼리.setDescending(true);
|
두 번째 및 세 번째 탭에는 문서의 충돌하는 수정본 수가 표시됩니다. 충돌하는 수정본의 수만 표시되지만, 충돌하는 수정본을 해결하려면 database.getDocument({id}).getConflictingRevisions()
메서드를 사용합니다.
동기화 게이트웨이 및 카우치베이스 서버 배포하기
이 애플리케이션에 대한 새 동기화 게이트웨이 및 Couchbase 서버 인스턴스를 Tutum으로 배포합니다. Tutum.co에서 로그인하거나 새 계정을 만든 다음 이를 PaaS 계정(Digital Ocean, AWS...)에 연결합니다. 에서 노드 탭에서 새 노드를 생성하고 원하는 PaaS를 선택합니다. 노드에서 태그 필드에 평가 앱그런 다음 스택 탭으로 투툼 파일 를 클릭하고 생성을 클릭합니다. 이 스택에는 카우치베이스 서버 컨테이너와 연결된 동기화 게이트웨이 컨테이너가 포함되어 있습니다.참고: 동기화 게이트웨이 컨테이너가 존재하지 않는 Couchbase Server 버킷에 연결하려고 하기 때문에 실행에 실패합니다. Couchbase Server가 배포되고 다음에서 관리자 콘솔에 연결할 수 있게 되려면 몇 분 정도 걸릴 수 있습니다. http://{IP}:8091
. 연결이 가능하면 계정과 다음과 같은 버킷을 만듭니다. 기본값 (동기화 게이트웨이 구성 파일은 버킷의 이름을 다음과 같이 지정합니다. 기본값). 버킷이 생성되면 다시 Tutum 서비스 탭을 클릭하고 동기화 게이트웨이 컨테이너를 다시 시작(또는 실행 버튼을 눌러 중지해야 합니다).
데이터베이스에서 모든 문서 제거하기
사용 delete-documents/delete.js 스크립트를 사용하여 특정 데이터베이스의 모든 문서를 제거할 수 있습니다. Couchbase Lite 또는 Sync Gateway 데이터베이스가 될 수 있습니다. 스크립트에서 호스트 이름을 문서를 삭제하려는 대상 데이터베이스 중 하나로 바꿉니다.