- 版本:1.0.19
- GitHub: https://github.com/couchbaselabs/nativescript-couchbase
- NPM: https://npmjs.net.cn/package/nativescript-couchbase-trotter
- 下载
- 昨天:0
- 上周:0
- 上个月:0
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 并获得您贡献的认可。