nativescript-couchbase-trotter
by asqwrd | v1.0.19
Telerik NativeScript 的 Couchbase Lite 插件
npm i --save nativescript-couchbase-trotter

Telerik NativeScript 的 Couchbase Lite 插件

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", {descending : false, limit : 20,  skip : 1, startKey: "name to strat with", endKey:"name to end at"});
for(var i = 0; i < rows.length; i++) {
personList.push(rows[i]);
}

查询 MapReduce 视图时可用选项如下

  • startKey:开始的位置键。默认值 null,表示从开头开始。

  • endKey:返回的最后键。默认值 null,表示继续到末尾。

  • descending:如果设置为 true,则键将按反向顺序返回。(这也反转了 startKey 和 endKey 属性的含义,因为查询现在将从最高键开始,并在较低的键结束!)

  • limit:如果非零,这是将返回的最大行数。

  • skip:如果非零,则跳过这些行(如果存在 startKey,则从 startKey 开始。)

与 Couchbase Sync Gateway 和 Couchbase Server 同步

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

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

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

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

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

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

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 包装器中的变更也不频繁。

如果您觉得缺少某些功能或者发现了错误,请提交一个工单以便进行修正,或者提交一个 pull request 并获得您贡献的认可。