저는 최근에 카우치베이스 밋업 캘리포니아 마운틴뷰에서 네이티브스크립트, 앵귤러 및 NoSQL 개발을 주제로 한 세미나를 개최했습니다. 특별한 게스트와 함께, TJ VanToll 에서 모바일 애플리케이션 개발과 그 방법에 대해 논의했습니다. 카우치베이스 를 포함할 수 있으며, NoSQL 스토리지 및 데이터 동기화를 위해 포함할 수 있습니다.

Couchbase MV Meetup June 2017

행사 참여율이 높았고, 많은 분들의 요청에 따라 Couchbase 프로젝트를 가능하게 하는 데 사용된 코드를 공유하고 검토하고 싶었습니다.

컴퓨터에 NativeScript CLI와 Xcode 또는 Android SDK가 설치 및 구성되어 있다고 가정하면 명령 프롬프트 또는 터미널에서 새 프로젝트를 만들 수 있습니다:

그리고 --ng 플래그를 사용하면 Core 프로젝트가 아닌 Angular 프로젝트를 생성하고 있음을 나타냅니다.

우리가 만드는 프로젝트는 두 개의 페이지와 데이터 서비스로 구성됩니다.

Couchbase with NativeScript Meetup Example

애플리케이션 내에서 데이터베이스에 저장된 동영상 목록을 표시하고 해당 데이터베이스에 동영상을 추가할 수 있습니다. 이 모든 것은 데이터 서비스를 통해 관리됩니다. 카우치베이스 동기화 게이트웨이를 사용하면 동기화를 수행할 수 있습니다.

새 NativeScript 프로젝트에 다음 디렉터리와 파일을 추가합니다:

Angular 개발에서 각 컴포넌트에는 TypeScript 및 HTML 파일이 있습니다. 각 서비스에는 TypeScript 파일만 있습니다.

로컬에 설치된 Couchbase Lite 데이터베이스와의 상호 작용을 처리할 데이터 서비스를 설계하는 것부터 시작해 보겠습니다. 프로젝트의 앱/공급자/데이터베이스.service.ts 파일을 열고 다음을 포함하세요:

위의 서비스에는 많은 일이 일어나고 있으므로 이를 세분화해야 합니다.

모든 컴포넌트 종속성을 가져오고 변수를 정의한 후, 우리는 생성자 메서드를 사용합니다:

에서 생성자 메서드를 사용하여 Couchbase NoSQL 데이터베이스를 생성하고 열고 데이터 쿼리에 사용할 보기를 만듭니다. 이 보기 로직은 쿼리 시 이름이 유형 와 같은 영화. 이 조건과 일치하지 않는 다른 문서는 결과에 포함되지 않습니다.

뷰를 쿼리할 때 화면에 표시하도록 선택할 수 있는 결과 배열을 받게 됩니다. 이 작업은 적절한 컴포넌트에서 수행할 것입니다.

Couchbase의 강력하고 놀라운 기능을 활용하기 위해 애플리케이션 내에서 복제/동기화 기능을 지원하고자 합니다. 애플리케이션 내에서 시작 복제 메서드를 사용하면 다음과 같습니다:

카우치베이스 동기화 게이트웨이 인스턴스에 대한 정보를 제공하면 양방향으로 데이터를 지속적으로 복제할 수 있습니다. 모바일 애플리케이션은 원격 데이터를 읽지 않으므로 로컬 데이터가 변경되면 변경 리스너를 설정합니다. 이러한 변경 사항은 Angular 이미터를 통해 방출됩니다.

이 데이터 서비스를 각 컴포넌트에 주입하려면 프로젝트의 @NgModule 블록을 클릭합니다. 프로젝트의 앱/앱.모듈.ts 파일을 열고 다음과 같이 만듭니다:

이 서비스는 가져와서 공급자 배열의 @NgModule 블록을 추가했습니다. 한발 앞서서 저희가 만들고 있는 각 컴포넌트도 가져왔습니다.

이제 데이터베이스에 새 동영상을 추가하는 컴포넌트로 이동해 보겠습니다. 프로젝트의 앱/컴포넌트/컴포넌트 만들기/컴포넌트 만들기.ts 파일을 열고 다음 TypeScript 코드를 포함합니다:

위 코드에서 우리는 데이터베이스 서비스 와 함께 이전에 생성된 Angular 위치 서비스. 서비스 사용 데이터베이스 서비스 를 사용하여 데이터베이스 인스턴스를 가져와서 입력 이 반대할 때 저장 메서드가 호출됩니다. 메서드의 입력 객체가 UI의 양식에 바인딩됩니다.

이 컴포넌트에 대한 UI는 프로젝트의 앱/컴포넌트/컴포넌트 만들기/컴포넌트 만들기.html file:

위의 XML에서 두 개의 텍스트 필드 태그는 입력 변수를 통해 ngModel 속성을 사용합니다.

네이티브 스크립트 애플리케이션의 마지막 부분은 데이터베이스에 있는 동영상을 나열하는 것입니다. 프로젝트의 앱/컴포넌트/목록/목록.component.ts 파일을 열고 다음 TypeScript 코드를 포함합니다:

다시 말하지만, 우리는 데이터베이스 서비스위치및 NgZone 서비스를 구성 요소의 생성자 메서드를 사용합니다.

에 데이터를 로드하는 것은 결코 좋은 생각이 아닙니다. 생성자 메서드를 사용하므로 ngOnInit 메서드를 대신 사용합니다:

몇 가지 일이 일어나고 있습니다. ngOnInit 메서드를 사용할 수 있습니다. 데이터베이스에서 데이터를 로드하고 싶지만 두 가지 방법으로 로드해야 합니다. 애플리케이션이 열릴 때 데이터를 로드해야 하고, 생성 화면에서 뒤로 이동할 때 데이터를 로드해야 합니다.

왜냐하면 ngOnInit 메서드가 뒤로 탐색할 때 트리거되지 않으므로 위치 이벤트를 구독해야 합니다. 두 시나리오 모두에서 생성한 뷰를 쿼리합니다.

동기화 지원이 필요하기 때문에 시작 복제 서비스에 접속하여 동기화 게이트웨이 정보를 전달합니다. 로컬에서 테스트하는 경우 Android 및 iOS에 적합한 호스트 정보를 제공해야 합니다.

변경 사항을 수신하는 동안 들어오는 모든 데이터를 ID로 조회하여 목록에 추가해야 합니다.

동영상을 나열하기 위한 컴포넌트와 페어링되는 UI는 다음에서 찾을 수 있습니다. 앱/컴포넌트/목록/목록.component.html file:

위의 XML에는 간단한 ListView 여기서 각 행에는 Couchbase에 저장하고 있는 객체의 정보가 들어 있습니다.

네이티브 스크립트 애플리케이션을 마무리하려면 탐색을 담당하는 라우팅 파일을 수정해야 합니다. 프로젝트의 앱/앱.라우팅.ts 파일을 열고 다음 TypeScript를 포함합니다:

위 코드에서는 두 컴포넌트만 가져와서 애플리케이션 내에서 가능한 경로로 나열하고 있습니다. Angular 애플리케이션에서 NativeScript를 사용한 라우팅에 대한 자세한 내용은 이전 글에서 확인할 수 있습니다, Angular 라우터로 네이티브스크립트 앱 탐색하기.

우리 프로젝트는 네이티브스크립트뿐만 아니라 별도의 엔티티인 동기화 게이트웨이로 구성되어 있다는 것을 기억하세요. 동기화 작동 방식에 대한 구성 파일을 정의해야 합니다.

라는 파일을 만듭니다, 동기화 게이트웨이-config.json 를 클릭하고 다음을 포함합니다:

카우치베이스 동기화 게이트웨이를 시작할 때 위의 구성을 사용해야 합니다. 이는 데이터 동기화를 통해 수행할 수 있는 작업의 기본적인 예시일 뿐입니다.

결론

저는 개인적으로 네이티브 스크립트 는 모바일 개발을 위한 훌륭한 기술입니다. 커뮤니티에서 지원하는 네이티브스크립트용 카우치베이스 플러그인을 사용하면 애플리케이션 내에 NoSQL 및 데이터 동기화 지원을 포함할 수 있습니다.

현재 등록되어 있지 않은 경우 카우치베이스 실리콘밸리 그룹에 속해 있고 마운틴뷰 지역에 계신다면 잠시 시간을 내어 등록하는 것이 좋습니다. NativeScript를 사용한 Couchbase가 실제로 작동하는 모습을 더 자세히 보고 싶으시다면 제가 작성한 이전 글을 살펴보시기 바랍니다. 여기.

카우치베이스 라이트에 대한 자세한 내용은 다음을 참조하세요. 카우치베이스 개발자 포털.

작성자

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

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

댓글 남기기