nativescript-couchbase
Couchbase Lite 插件用于 Telerik NativeScript
npm i --save nativescript-couchbase

Couchbase Lite 插件用于 Telerik NativeScript

Couchbase Lite 是移动设备的 NoSQL 内嵌数据库。它是 SQLite 和 Core Data 等常用数据库技术的替代品。

配置

要将此插件添加到您的 Angular 或纯 JavaScript NativeScript 项目中,请在终端或命令提示符中执行以下操作

tns plugin add nativescript-couchbase

如果您想尝试此项目捆绑的任何演示应用程序,请在克隆存储库后执行以下操作

npm install
npm run deploy-android-angular

对于第三行,选项列表如下

npm run deploy-android-angular
npm run deploy-android-vanilla
npm run deploy-ios-angular
npm run deploy-ios-vanilla

如果您正在使用 TypeScript 并且希望使用此插件的类型定义,请将以下行添加到项目中的 references.d.ts 文件

/// <reference path="./node_modules/nativescript-couchbase/couchbase.d.ts" />

如果不包含以上行,您的 TypeScript 编译器可能在构建过程中抛出错误。

用法

在您的项目中包含插件

var couchbaseModule = require("nativescript-couchbase");

创建或打开现有数据库

var database = new couchbaseModule.Couchbase("test-database");

使用 CRUD 操作管理数据

创建新文档

var documentId = database.createDocument({
"firstname": "Nic",
"lastname": "Raboy",
"address": {
"city": "San Francisco",
"state": "CA",
"country": "USA"
}
"twitter": "https://www.twitter.com/nraboy"
});

检索现有文档

var person = database.getDocument(documentId);

更新现有文档

database.updateDocument(documentId, {
"firstname": "Nicolas",
"lastname": "Raboy",
"twitter": "https://www.twitter.com/nraboy"
});

删除文档

var isDeleted = database.deleteDocument(documentId);

使用 MapReduce 视图进行查询

知道文档 ID 并非总是可行的。因此,可以使用在视图中定义的准则查询多个文档。

创建 MapReduce 视图

MapReduce 视图将产生一个键值对。可以在 emitter 周围放置逻辑,使视图更具体。

database.createView("people", "1", function(document, emitter) {
emitter.emit(document._id, document);
});

查询 MapReduce 视图

var rows = database.executeQuery("people");
for(var i = 0; i < rows.length; i++) {
personList.push(rows[i]);
}

与 Couchbase Sync Gateway 和 Couchbase Server 同步

Couchbase Lite 可以与 Couchbase Sync Gateway 一起工作,在设备与平台之间提供同步支持。如果目标是仅用于离线目的,则不需要 Couchbase Sync Gateway 来使用 Couchbase Lite。

Couchbase Sync Gateway 可以在移动部分中的 Couchbase 下载门户 下载。

demo 目录中包含 Sync Gateway 的示例配置文件。您可以从命令提示符或终端执行以下操作来启动它

/path/to/sync/gateway/bin/sync_gateway /path/to/demo/sync-gateway-config.json

在示例配置文件中,不使用 Couchbase Server,而是使用一个内存数据库进行原型设计。您可以通过浏览器中的 https://127.0.0.1:4985/_admin/ 访问它。

要在本机设备和服务器之间进行复制,必须在您的项目中添加以下内容

var couchbaseModule = require("nativescript-couchbase");
database = new couchbaseModule.Couchbase("test-database");

var push = database.createPushReplication("http://sync-gateway-host:4984/test-database");
var pull = database.createPullReplication("http://sync-gateway-host:4984/test-database");
push.setContinuous(true);
pull.setContinuous(true);
push.start();
pull.start();

数据现在将连续在本机设备和 Sync Gateway 之间进行复制。

监听更改

database.addDatabaseChangeListener(function(changes) {
for(var i = 0; i < changes.length; i++) {
console.log(changes[i].getDocumentId());
}
});

插件开发

Couchbase NativeScript 插件正在积极开发中。底层 Couchbase Android 和 Couchbase iOS SDK 的 API 更改不频繁,因此 NativeScript 的 JavaScript 包装器中的更改也不频繁。

如果您觉得缺少某些功能或发现了错误,请提交一个工单以便纠正,或者提交一个拉取请求,以获得您的贡献认可。