Pouchdb-quick-guide
PouchDB-概要
この章では、PouchDBの簡単な紹介と、その機能とその機能について説明します。
PouchDBとは何ですか?
PouchDBは、JavaScriptで記述されたオープンソースの in-browserデータベースAPI です。 これはlink:/couchdb/index [Couch DB]&minuss;をモデルにしています。 NoSQLデータベース。 このAPIを使用して、オフラインおよびオンラインで動作するアプリケーションを構築できます。 内部的にWebSQLとIndexedDBを使用してデータを保存します。
仕組み
PouchDBでは、アプリケーションがオフラインのときに、ブラウザーのWebSQLとIndexedDBを使用してデータがローカルに保存されます。 アプリケーションがオンラインに戻ると、CouchDBおよび互換性のあるサーバーと同期されます。
PouchDBを使用すると、違いに気付くことなく、ローカルデータベースとリモートデータベースの両方とシームレスに通信できます。
PouchDBの機能
PouchDBの機能は次のとおりです-
- クロスブラウザ-PouchDBが提供するAPIはすべての環境で同じように動作するため、さまざまなブラウザでPouchDBアプリケーションを実行できます。
- 軽量-PouchDBは非常に軽量なAPIであり、スクリプトタグを使用するだけで簡単に組み込まれます。
- 習得しやすい-プログラミング言語の予備知識がある場合、PouchDBを習得するのは簡単です。
- オープンソース-PouchDBはオープンソースアプリケーションであり、GitHubで入手できます。
PouchDBの利点
PouchDBの利点は次のとおりです-
- PouchDBはブラウザ内にあるため、ネットワーク経由でクエリを実行する必要はありません。これにより、クエリの実行が高速になります。
- サポートされているサーバーのいずれかとデータを同期できます。そうすることで、オンラインとオフラインの両方でアプリを実行できます。
PouchDBをサポートするブラウザー
以下は、PouchDBをサポートするブラウザです-
- Firefox 29+ (Firefox OSおよびFirefox for Androidを含む)
- Chrome 30+
- Safari 5+
- Internet Explorer 10+
- Opera 21+
- Android 4.0+
- iOS 7.1+
- Windows Phone 8+
PouchDB-環境
この章では、システムにPouchDBをダウンロードしてインストールする方法について説明します。
PouchDBのインストール
PouchDBを使用するには、*。js *ファイルをダウンロードして、スクリプトに含める必要があります。 PouchDBをインストールする手順は次のとおりです。
ステップ1
次のリンクをクリックして、PouchDB Webサイトのホームページにアクセスします-
ステップ2
上記のスクリーンショットに示すように、Webページの右上にある[ダウンロード]ボタンをクリックします。 これにより、システムに PouchDB-5.3.0.min.js がダウンロードされます。
ステップ3
*PouchDB-5.3.0.min.js* を作業ディレクトリにコピーして貼り付け、次のコマンドに示すようにJavaScriptに含めます。
<script src = "PouchDB-5.3.0.min.js"></script>
Node.jsを使用してPouchをインストールする
PouchDBをNode.jsモジュールとしてインストールすることもできます。 Node.jsを使用してPouchDBをインストールする手順は次のとおりです。
ステップ1
リンク:/coffeescript/coffeescript_environment [coffee script]チュートリアルのNode.jsのインストールセクションに記載されている手順に従って、Node.jsをインストールします。
ステップ2
コマンドプロンプトを開き、次のコマンドを実行します。 これにより、システムにPouchDBノードモジュールがインストールされます。
npm install --save PouchDB
CouchDBのダウンロード
オフラインの場合、PouchDBはデータをローカルに保存し、アプリのように機能します。 互換性のあるサーバーに接続して、オンラインでアクセスできます。 PouchDBはCouchDBに接続できることがわかっているので、CouchDBもインストールします。 CouchDBをインストールする手順は次のとおりです。
ステップ1
CouchDBの公式Webサイトはhttp://couchdb.apache.org/[http://couchdb.apache.org]です。 特定のリンクをクリックすると、次のスクリーンショットに示すように、CouchDBの公式Webサイトのホームページを取得できます。
ステップ2
ダウンロードボタンをクリックすると、さまざまな形式のCouchDBのダウンロードリンクが提供されるページに移動します。 次のスナップショットは同じことを示しています。
ステップ3
Windowsシステムのダウンロードリンクを選択し、提供されているミラーのいずれかを選択してダウンロードを開始します。
CouchDBのインストール
Windows実行可能ファイル setup-couchdb-1.6.1_R16B02.exe ファイルがシステムにダウンロードされます。 セットアップファイルを実行し、インストールを続行します。
CouchDBをシステムに正常にインストールした後、CouchDBがインストールされたフォルダーを開き、binフォルダーに移動して、 couchdb.bat という名前のスクリプトファイルを実行してサーバーを起動します。
インストール後、次のリンクにアクセスしてCouchDBの組み込みWebインターフェイスを開きます- http://127.0.0.1:5984/ 。 すべてが順調に進んだ場合、これによりWebページが表示され、次の出力が表示されます。
{
"couchdb":"Welcome","uuid":"c8d48ac61bb497f4692b346e0f400d60",
"version":"1. 6.1",
"vendor": {
"version":"1.6.1","name":"The Apache Software Foundation"
}
}
次のURLを使用して、CouchDB Webインターフェイスと対話できます-
http://127.0.0.1:5984/_utils/
これは、CouchDBのWebインターフェイスであるFutonのインデックスページを示しています。
PouchDB-データベースの作成
PouchDBコンストラクターを使用して、PouchDBにデータベースを作成できます。
構文
以下は、PouchDBコンストラクターを使用する構文です。 これには、データベースの名前をパラメーターとして渡す必要があります。
new PouchDB(Database_name)
例
*node* を使用してPouchDBにデータベースを作成するには、まず* require()*メソッドを使用してPouchDBパッケージを要求する必要があります。その後、次の例に示すようにデータベースを作成できます。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
console.log ("Database created Successfully.");
上記のコードを Create_Database.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples>node Create_Database.js
これにより、データベースがローカルに作成され(現在のディレクトリにフォルダーが表示されます)、次のメッセージが表示されます。
Database created Successfully.
PouchDB-データベース情報
- info()*というメソッドを使用して、データベースに関する基本情報を取得できます。
構文
以下は、PouchDBの* info()*メソッドを使用する構文です。 このメソッドはコールバック関数を受け入れます。
db.info([callback])
例
以下は、* info()メソッドを使用してデータベース情報を取得する例です。 ここでは、 *my_database という名前のデータベースの情報を表示しています。 エラーの場合、エラーはコンソールに表示されます。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Database information
db.info(function(err, info) {
if (err) {
return console.log(err);
} else {
console.log(info);
}
});
上記のコードを Database_info.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples>node Database_info.js
これにより、指定されたデータベースの情報が次のように表示されます。
{
doc_count: 0,
update_seq: 0,
backend_adapter: 'LevelDOWN',
db_name: 'my_database',
auto_compaction: false,
adapter: 'leveldb'
}
リモートデータベース情報
同様に、サーバー(CouchDB)にリモートで保存されているデータベースの情報を取得します。 そのためには、データベース名の代わりに、CouchDBの必要なデータベースへのパスを渡す必要があります。
例
以下は、CouchDBサーバーに保存されているデータベースの情報を取得する例です。 このコードは、 my_database という名前のデータベースの情報を提供します。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Database information
db.info(function(err, info) {
if (err) {
return console.log(err);
} else {
console.log(info);
}
});
上記のコードを Database_ Remote_info.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples>node Database_Remote_info.js
これにより、指定されたデータベースの情報が次のように表示されます。
{
db_name: 'my_database',
doc_count: 0,
doc_del_count: 0,
update_seq: 0,
purge_seq: 0,
compact_running: false,
disk_size: 79,
data_size: 0,
instance_start_time: '1458209191708486',
disk_format_version: 6,
committed_update_seq: 0,
host: 'http://localhost:5984/my_database/',
auto_compaction: false,
adapter: 'http'
}
PouchDB-データベースの削除
- db.destroy()*メソッドを使用して、PouchDBのデータベースを削除できます。
構文
以下は、* db.destroy()*メソッドを使用する構文です。 このメソッドは、コールバック関数をパラメーターとして受け入れます。
db.destroy()
例
以下は、* destroy()メソッドを使用してPouchDBでデータベースを削除する例です。 ここでは、前の章で作成した *my_database という名前のデータベースを削除しています。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//deleting database
db.destroy(function (err, response) {
if (err) {
return console.log(err);
} else {
console.log ("Database Deleted”);
}
});
上記のコードを* Delete_Database.js。という名前のファイルに保存します。コマンドプロンプトを開き、以下に示すように *node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Delete_Database.js
これにより、ローカルに保存されている my_database という名前のデータベースが削除され、次のメッセージが表示されます。
Database Deleted
リモートデータベースの削除
同様に、サーバー(CouchDB)にリモートで保存されているデータベースを削除できます。
これを行うには、データベース名の代わりに、削除する必要があるデータベースへのパスをCouchDBで渡す必要があります。
例
CouchDBサーバーに my_database という名前のデータベースがあるとします。 次に、URL http://127.0.0.1:5984/_utils/indexl を使用してCouchDB内のデータベースのリストを確認すると、次のスクリーンショットが表示されます。
以下は、CouchDBサーバーに保存されている my_database という名前のデータベースを削除する例です。
//Requiring the package
var PouchDB = require('pouchdb');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//deleting database
db.destroy(function (err, response) {
if (err) {
return console.log(err);
} else {
console.log("Database Deleted");
}
});
上記のコードを Remote_Database_Delete.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >Remote_Database_Delete.js
これにより、指定されたデータベースがPouchDBから削除され、次のメッセージが表示されます。
Database Deleted
検証
上記のプログラムを実行した後、再度URLにアクセスすると、次のスクリーンショットが表示されます。 ここでは、 my_database が削除されたため、2つのデータベースのみを観察できます。
PouchDB-ドキュメントの作成
- db.put()*メソッドを使用して、PouchDBにドキュメントを作成できます。
構文
以下は、PouchDBのdb.put()メソッドを使用する構文です。 PouchDBで作成されるドキュメントを変数に保存し、このメソッドにパラメーターとして渡すことができます。 さらに、このメソッドはパラメーターとしてコールバック(オプション)関数も受け入れます。
db.put(document, callback)
例
以下は、* put()メソッドを使用してPouchDBにドキュメントを作成する例です。 作成するドキュメントは、コンマ(、)で区切られ、中括弧( *\ {} )で囲まれたキーと値のペアのセットであるJSON形式である必要があります。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Preparing the document
doc = {
_id : '001',
name: 'Raju',
age : 23,
designation : 'Designer'
}
//Inserting Document
db.put(doc, function(err, response) {
if (err) {
return console.log(err);
} else {
console.log("Document created Successfully");
}
});
上記のコードを Create_Document.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Create_Document.js
これにより、 my_database という名前のPouchDBデータベースに特定のドキュメントが作成され、ローカルに保存され、次のメッセージが表示されます。
Document created Successfully
リモートデータベースへのドキュメントの挿入
サーバー(CouchDB)にリモートで保存されているデータベースにドキュメントを挿入することもできます。
そのためには、データベース名の代わりに、CouchDBでドキュメントを作成するデータベースへのパスを渡す必要があります。
例
CouchDBサーバーに my_database という名前のデータベースがあるとします。 次に、URL http://127.0.0.1:5984/_utils/indexl を使用してCouchDB内のデータベースのリストを確認すると、次のスクリーンショットが表示されます。
ここで、 my_database という名前のデータベースをクリックすると、次のスクリーンショットに示すように空のデータベースが見つかります。
以下は、CouchDBサーバーに保存されている my_database という名前のデータベースにドキュメントを挿入する例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Preparing the document
doc = {
_id : '001',
name: 'Raju',
age : 23,
designation : 'Designer'
}
//Inserting Document
db.put(doc, function(err, response) {
if (err) {
return console.log(err);
} else {
console.log("Document created Successfully");
}
});
上記のコードを Remote_Create_Document.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Remote_Create_Document.js
これにより、CouchDBに保存されている my_database という名前のPouchDBデータベースに特定のドキュメントが作成され、次のメッセージが表示されます。
Document created Successfully
検証
上記のプログラムを実行した後、 my_database に再度アクセスすると、次のスクリーンショットに示すように作成されたドキュメントを確認できます。
PouchDB-文書の読み取り
- db.get()*メソッドを使用して、PouchDBのドキュメントのコンテンツを読み取り/取得できます。
構文
以下は、PouchDBの* db.get()*メソッドを使用する構文です。 このメソッドは、*ドキュメントID *とオプションのコールバック関数を受け入れます。
db.get(document, callback)
例
以下は、* get()*メソッドを使用してPouchDBのドキュメントのコンテンツを読み取る例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Reading the contents of a Document
db.get('001', function(err, doc) {
if (err) {
return console.log(err);
} else {
console.log(doc);
}
});
上記のコードを Read_Document.js という名前のファイルに保存します。 コマンドプロンプトを開き、以下に示すようにノードを使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Read_Document.js
これは、ローカルに保存されている my_database という名前のデータベースに存在する特定のドキュメントの内容を読み取ります。 次のメッセージがコンソールに表示されます。
{
name: 'Raju',
age: 23,
designation: 'Designer',
_id: '001',
_rev: '1-ba7f6914ac80098e6f63d2bfb0391637'
}
リモートデータベースからのドキュメントの読み取り
サーバー(CouchDB)にリモートで保存されているデータベースからドキュメントを読み取ることもできます。
そのためには、データベース名の代わりに、CouchDBのデータベースにパスを渡す必要があります。これには、読み取るドキュメントが含まれています。
例
CouchDBサーバーに my_database という名前のデータベースがあるとします。 次に、URL http://127.0.0.1:5984/_utils/indexl を使用してCouchDB内のデータベースのリストを確認すると、次のスクリーンショットが表示されます。
*my_database* という名前のデータベースをクリックすると、次のスクリーンショットを見ることができます。 ここで、このデータベースにID *001* のドキュメントが含まれていることがわかります。
以下は、CouchDBサーバーに保存されている my_database という名前のデータベースに存在するidが「 001 」であるドキュメントのコンテンツを読み取る例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Reading the contents of a document
db.get('001', function(err, doc) {
if (err) {
return console.log(err);
} else {
console.log(doc);
}
});
上記のコードを Remote_Read_Document.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Remote_Read_Document.js
これは、CouchDBに保存されている my_database という名前のデータベースに存在する特定のドキュメントの内容を読み取ります。 次のメッセージがコンソールに表示されます。
{
_id: '001',
_rev: '3-552920d1ca372986fad7b996ce365f5d',
name: 'Raju',
age: 23,
designation: 'Designer'
}
PouchDB-ドキュメントの更新
PouchDBでドキュメントを作成するたびに、新しいフィールド _rev が生成されます。これは revision marker と呼ばれます。 _rev の値は一意の乱数であり、ドキュメントに変更を加えるたびに _rev の値が変更されます。
(_ rev)*を使用して、PouchDBの既存のドキュメントを更新できます。 そのためには、まず更新するドキュメントの *_rev 値を取得します。 ここで、更新されるコンテンツを取得した _rev 値とともに新しいドキュメントに配置し、最後に* put()*メソッドを使用してこのドキュメントをPouchDBに挿入します。
例
個人の詳細を含むID 001 のドキュメントがPouchDBにあるとします。 このドキュメントを更新するには、そのリビジョン番号が必要です。 したがって、ドキュメントのコンテンツを取得するには、次のコードを使用します。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Reading the contents of a Document
db.get('001', function(err, doc) {
if (err) {
return console.log(err);
} else {
console.log(doc);
}
});
上記のコードを実行すると、次の出力が表示されます。
{
_id: '001',
_rev: '3-552920d1ca372986fad7b996ce365f5d',
name: 'Raju',
age: 23,
designation: 'Designer'
}
これで、 _ rev を使用して、次のコードに示すように、キー「 age 」の値を26に更新できます。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Preparing the document for update
doc = {
age: 26,
_rev: '3-552920d1ca372986fad7b996ce365f5d',
}
//Inserting Document
db.put(doc);
//Reading the contents of a Document
db.get('001', function(err, doc) {
if (err) {
return console.log(err);
} else {
console.log(doc);
}
});
上記のコードを Update_Document.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\Pouch_Examples>node Update_Document.js
これにより、ローカルに保存されている my_database という名前のデータベースに存在する特定のドキュメントのコンテンツが更新されます。 次のメッセージがコンソールに表示されます。
{
name: 'Raju',
age: 26,
designation: 'Designer',
_id: '001',
_rev: '2-61b523ccdc4e41a8435bdffbb057a7a5'
}
リモートデータベースのドキュメントを更新する
サーバー(CouchDB)にリモートで保存されているデータベース内の既存のドキュメントを更新することもできます。
これを行うには、データベース名の代わりに、更新するドキュメントを含むCouchDBのデータベースへのパスを渡す必要があります。
例
CouchDBサーバーに my_database という名前のデータベースがあるとします。 次に、URL http://127.0.0.1:5984/_utils/indexl を使用してCouchDB内のデータベースのリストを確認すると、次のスクリーンショットが表示されます。
*my_database* という名前のデータベースをクリックすると、次のスクリーンショットを見ることができます。 ここで、このデータベースにID *001* のドキュメントが含まれていることがわかります。
以下は、CouchDBサーバーに保存されている my_database という名前のデータベースに存在するidが「 001 」のドキュメントの経過時間を更新する例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Preparing the document for update
doc = {
age: 26,
_rev: '3-552920d1ca372986fad7b996ce365f5d',
}
//Inserting Document
db.put(doc);
//Reading the contents of a Document
db.get('001', function(err, doc) {
if (err) {
return console.log(err);
} else {
console.log(doc);
}
});
上記のコードを Remote_Update_Document.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Remote_Update_Document.js
これにより、CouchDBに保存されている my_database という名前のデータベースに存在する特定のドキュメントのコンテンツが更新されます。 次のメッセージがコンソールに表示されます。
{
_id: '001',
_rev: '2-b9640bffbce582c94308905eed8bb545',
name: 'Raju',
age: 26,
designation: 'Designer'
}
PouchDB-ドキュメントの削除
- db.remove()*メソッドを使用して、PouchDBに存在するデータベースからドキュメントを削除できます。
構文
以下は、PouchDBの* db.remove()メソッドを使用する構文です。 このメソッドには、次のコードに示すように、 *id と _rev を渡して既存のドキュメントを削除する必要があります。 このメソッドは、オプションのコールバック関数を受け入れます。 idと_revの代わりに完全なドキュメントを渡すこともできます。
db. get ( docId, docRev, [callback] )
or
db. get ( docId, docRev, [callback] )
例
個人の詳細を含むID 001 のPouchDBにドキュメントがあるとします。 id とともにこのドキュメントを削除するには、 _ rev 番号も必要です。 したがって、次のコードに示すようにドキュメントのコンテンツを取得します。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Reading the contents of a Document
db.get('001', function(err, doc) {
if (err) {
return console.log(err);
} else {
console.log(doc);
}
});
上記のコードを実行すると、次の出力が得られます。
{
_id: '001',
_rev: '3-552920d1ca372986fad7b996ce365f5d',
name: 'Raju',
age: 23,
designation: 'Designer'
}
これで、ドキュメントの _rev とidを使用して、次のコードに示すように* remove()*メソッドを使用してこれを削除できます。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Deleting an existing document
db.remove('001', '3-552920d1ca372986fad7b996ce365f5d', function(err) {
if (err) {
return console.log(err);
} else {
console.log("Document deleted successfully");
}
});
上記のコードを Delete_Document.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Delete_Document.js
これにより、ローカルに保存されている my_database という名前のデータベースに存在する特定のドキュメントのコンテンツが削除されます。 次のメッセージが表示されます。
Document deleted successfully
リモートデータベースからドキュメントを削除する
サーバー(CouchDB)にリモートで保存されているデータベースから既存のドキュメントを削除することもできます。
そのためには、データベース名の代わりに、CouchDBのデータベースにパスを渡す必要があります。これには、読み取るドキュメントが含まれています。
例
CouchDBサーバーに my_database という名前のデータベースがあるとします。 次に、URL http://127.0.0.1:5984/_utils/indexl を使用してCouchDB内のデータベースのリストを確認すると、次のスクリーンショットが表示されます。
*my_database* という名前のデータベースをクリックすると、次のスクリーンショットを見ることができます。 ここで、データベースにid *001* のドキュメントが含まれていることがわかります。
以下は、CouchDBサーバーに保存されている my_database という名前のデータベースに存在するID「 001 」を持つドキュメントのコンテンツを削除する例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Deleting an existing document
db.remove('001', '3-552920d1ca372986fad7b996ce365f5d', function(err) {
if (err) {
return console.log(err);
} else {
console.log("Document deleted successfully");
}
});
上記のコードを Remote_Delete_Document.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Remote_Delete_Document.js
これにより、CouchDBに保存されている my_database という名前のデータベースに存在する特定のドキュメントが削除されます。 次のメッセージが表示されます。
Document deleted successfully
PouchDB-バッチ作成
- db.bulkDocs()*メソッドを使用して、PouchDBにドキュメントの配列(バッチ)を作成できます。 _id値を提供しない場合、このメソッドを使用してドキュメントを作成する際に、PouchDBが代わりにすべてのドキュメントの一意のIDを一括で生成します。
構文
以下は、PouchDBの* db.bulkDocs()*メソッドを使用する構文です。 PouchDBで作成されるすべてのドキュメントを配列に保存し、パラメーターとしてこのメソッドに渡すことができます。 それに加えて、このメソッドはパラメーターとしてコールバック(オプション)関数も受け入れます。
db.bulkDocs(docs, [options], [callback])
例
以下は、* db.bulkDocs()メソッドを使用してPouchDBに複数のドキュメントを作成する例です。 作成するドキュメントは、コンマ(、)で区切られ、中括弧( *\ {} )で囲まれたキーと値のペアのセットであるJSON形式である必要があります。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Preparing the documents array
doc1 = {_id: '001', name: 'Ram', age: 23, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Robert', age: 24, Designation: 'Programmer'}
doc3 = {_id: '003', name: 'Rahim', age: 25, Designation: 'Programmer'}
docs = [doc1, doc2, doc3]
//Inserting Documents
db.bulkDocs(docs, function(err, response) {
if (err) {
return console.log(err);
} else {
console.log("Documents created Successfully");
}
});
上記のコードを Create_Batch.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Create_Batch.js
これにより、ローカルに保存されている my_database という名前のPouchDBデータベースに特定のドキュメントが作成されます。 次のメッセージが表示されます。
Documents created Successfully
リモートデータベースへのバッチの挿入
サーバー(CouchDB)にリモートで保存されているデータベースにドキュメントの配列を挿入できます。
そのためには、データベース名の代わりに、CouchDBでドキュメントを作成するデータベースへのパスを渡す必要があります。
例
CouchDBサーバーに my_database という名前のデータベースがあるとします。 次に、URL http://127.0.0.1:5984/_utils/indexl を使用してCouchDB内のデータベースのリストを確認すると、次のスクリーンショットが表示されます。
以下は、CouchDBサーバーに保存されている my_database という名前のデータベースにドキュメントの配列を挿入する例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Preparing the documents array
doc1 = {_id: '001', name: 'Ram', age: 23, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Robert', age: 24, Designation: 'Programmer'}
doc3 = {_id: '003', name: 'Rahim', age: 25, Designation: 'Programmer'}
docs = [doc1, doc2, doc3]
//Inserting Documents
db.bulkDocs(docs, function(err, response) {
if (err) {
return console.log(err);
} else {
console.log("Documents created Successfully");
}
});
上記のコードを Remote_Create_Batch.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Remote_Create_Batch.js
これにより、CouchDBに保存されている my_database という名前のPouchDBデータベースに特定のドキュメントが作成されます。 次のメッセージが表示されます。
Document created Successfully
検証
*my_database* に再度アクセスすると、上記のプログラムを実行した後、次のスクリーンショットに示すように作成されたドキュメントを確認できます。
PouchDB-フェッチバッチ
- allDocs()*メソッドを使用して、PouchDBのデータベースから複数/バルクドキュメントを読み取り/取得できます。
構文
以下に、PouchDBの* db.allDocs()*メソッドを使用する構文を示します。 このメソッドは、オプションのコールバック関数を受け入れます。
db.allDocs()
例
以下は、* db.allDocs()メソッドを使用して、ローカルに保存されている *my_database という名前のデータベース内のすべてのドキュメントを取得する例です。 このメソッドは、ドキュメントの配列をオブジェクトの形式で取得し、 docs.rows として呼び出す必要がある各ドキュメントのコンテンツを取得します。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Retrieving all the documents in PouchDB
db.allDocs(function(err, docs) {
if (err) {
return console.log(err);
} else {
console.log (docs.rows);
}
});
上記のコードを Read_All_Document.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Read_All_Document.js
これは、ローカルに保存されている my_database という名前のデータベースに存在するすべてのドキュメントを読み取ります。 次のメッセージがコンソールに表示されます。
[
{
id: '001',
key: '001',
value: { rev: '1-9dc57f5faa7ea90eeec22eba8bfd05f5' }
},
{
id: '002',
key: '002',
value: { rev: '1-9bf80afcedb9f8b5b35567292affb254' }
},
{
id: '003',
key: '003',
value: { rev: '1-1204f108e41bf8baf867856d5da16c57' }
}
]
一般に、上記の結果に示すように、* allDocs()メソッドを使用すると、各ドキュメントの *_id、key および _rev フィールドのみを表示できます。 ただし、結果にドキュメント全体を含めるには、以下に示すようにオプションのパラメーター include_docs をtrueにする必要があります。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true}, function(err, docs) {
if (err) {
return console.log(err);
} else {
console.log (docs.rows);
}
});
上記のコードを実行すると、次のコードに示すように、指定されたドキュメント内の完全なドキュメントのリストが表示されます。
[
{
id: '001',
key: '001',
value: { rev: '1-9dc57f5faa7ea90eeec22eba8bfd05f5' },
doc: {
name: 'Ram',
age: 23,
Designation: 'Programmer',
_id: '001',
_rev: '1-9dc57f5faa7ea90eeec22eba8bfd05f5'
}
},
{
id: '002',
key: '002',
value: { rev: '1-9bf80afcedb9f8b5b35567292affb254' },
doc: {
name: 'Robert',
age: 24,
Designation: 'Programmer',
_id: '002',
_rev: '1-9bf80afcedb9f8b5b35567292affb254'
}
},
{
id: '003',
key: '003',
value: { rev: '1-1204f108e41bf8baf867856d5da16c57' },
doc: {
name: 'Rahim',
age: 25,
Designation: 'Programmer',
_id: '003',
_rev: '1-1204f108e41bf8baf867856d5da16c57'
}
}
]
リモートデータベースからのバッチの読み取り
サーバー(CouchDB)にリモートで保存されているデータベースからすべてのドキュメントを取得することもできます。
データベース名の代わりにこれを行うには、読み取るドキュメントを含むCouchDBのデータベースにパスを渡す必要があります。
例
CouchDBサーバーに my_database という名前のデータベースがあるとします。 次に、URL http://127.0.0.1:5984/_utils/indexl を使用してCouchDB内のデータベースのリストを確認すると、次のスクリーンショットが表示されます。
以下は、CouchDBサーバーに保存されている my_database という名前のデータベースに存在するすべてのドキュメントを読み取る例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true}, function(err, docs) {
if (err) {
return console.log(err);
} else {
console.log(docs.rows);
}
});
上記のコードを Remote_Read_AllDocument.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Remote_Read_AllDocument.js
これは、CouchDBに保存されている my_database という名前のデータベースに存在する特定のドキュメントの内容を読み取り、以下に示すようにコンソールに表示します。
[
{
id: '001',
key: '001',
value: { rev: '3-552920d1ca372986fad7b996ce365f5d' },
doc: {
_id: '001',
_rev: '3-552920d1ca372986fad7b996ce365f5d',
name: 'Raju',
age: 23,
designation: 'Designer'
}
},
{
id: '002',
key: '002',
value: { rev: '1-9af15cb11054ebe03a7816bf6c5e4128' },
doc: {
_id: '002',
_rev: '1-9af15cb11054ebe03a7816bf6c5e4128',
name: 'Robert',
age: 24,
Designation: 'Programmer'
}
},
{
id: '003',
key: '003',
value: { rev: '1-3033b5a78e915c52fd37325d42eb3935' },
doc: {
_id: '003',
_rev: '1-3033b5a78e915c52fd37325d42eb3935',
name: 'Rahim',
age: 25,
Designation: 'Programmer'
}
}
]
PouchDB-バッチの更新
- bulkDocs()メソッドを使用して、PouchDBのドキュメントの配列を一度に更新できます。 そのためには、ドキュメントの配列を作成する必要があります。各ドキュメントには、 *_ id、_rev 、および更新される値が含まれます。
PouchDBにローカルに保存されている my_database という名前のデータベースに、次の内容のdoc1、doc2、doc3という3つのドキュメントが含まれているとします。
doc1 = {_id: '001', name: 'Ram', age: 23, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Robert', age: 24, Designation: 'Programmer'}
doc3 = {_id: '003', name: 'Rahim', age: 25, Designation: 'Programmer'}
3つのドキュメントすべての年齢の値を2年増やす必要があるとします。 これを実現するには、最初に _rev 値を取得する必要があります。 したがって、次のコードを使用してこれらのドキュメントのコンテンツをフェッチします。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true},function(err, docs) {
if (err) {
return console.log(err);
} else {
console.log(docs.rows);
}
});
上記のコードを bulk_fetch.js として保存します。 実行時に、上記のプログラムは、以下に示すように、データベース内のドキュメントの_idおよび_rev値を提供します。
[
{
id: '001',
key: '001',
value: { rev: '1-1604b0c3ff69dc1e261265fd60808404' }
},
{
id: '002',
key: '002',
value: { rev: '1-b5e49db7e984841bf12a13e3ee548125' }
},
{
id: '003',
key: '003',
value: { rev: '1-a7b342786ecc707aa91f3b321a177b51' }
}
]
これで、以下に示すように、それぞれの _id および _rev 値を使用してドキュメントを更新できます。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_databas');
//Preparing the document
docs = [{_id : '001', _rev: '1-1604b0c3ff69dc1e261265fd60808404', age : 25, },
{_id : '002', _rev: '1-b5e49db7e984841bf12a13e3ee548125', age : 26, },
{_id : '003', _rev: '1-a7b342786ecc707aa91f3b321a177b51', age : 27 }]
//Updating the documents in bulk
db.bulkDocs(docs, function(err, response) {
if (err) {
return console.log(err);
} else {
console.log("Documents Updated Successfully");
}
});
上記のコードを Update_All_Document.js という名前のファイルに保存します。 コマンドプロンプトを開き、以下に示すようにノードを使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Update_All_Document.js
これにより、ローカルに保存されている my_database という名前のデータベースに存在するすべてのドキュメントが更新され、次のメッセージが表示されます。
Documents Updated Successfully
さて、コールバックの前に、* allDocs()関数のパラメーターとして *\ {include_docs:true} を追加して bulk_fetch.js プログラムを実行すると、更新されたドキュメントの値を確認できます。以下に示すように。
[
{
id: '001',
key: '001',
value: { rev: '2-77f3a9974dd578d12f3f2a33aae64c8d' },
doc: {
age: 25,
_id: '001',
_rev: '2-77f3a9974dd578d12f3f2a33aae64c8d'
}
},
{
id: '002',
key: '002',
value: { rev: '2-43966007568ce9567c96422195fcfa0d' },
doc: {
age: 26,
_id: '002',
_rev: '2-43966007568ce9567c96422195fcfa0d'
}
},
{
id: '003',
key: '003',
value: { rev: '2-6c5349652527f4f39583ff14f23cd677' },
doc: {
age: 27,
_id: '003',
_rev: '2-6c5349652527f4f39583ff14f23cd677'
}
}
]
リモートデータベースからのバッチの更新
サーバー(CouchDB)にリモートで保存されているデータベースからすべてのドキュメントを更新できます。
そのためには、データベース名の代わりに、CouchDBのデータベースにパスを渡す必要があります。これには、読み取るドキュメントが含まれています。
例
CouchDBサーバーに my_database という名前のデータベースがあるとします。 次に、URL http://127.0.0.1:5984/_utils/indexl を使用してCouchDB内のデータベースのリストを確認すると、次のスクリーンショットが表示されます。
そして、 my_database という名前のデータベースを選択すると、次のスクリーンショットに示すように、3つのドキュメントが含まれていることがわかります。
次に、次のコードを使用してこれらのドキュメントのコンテンツを取得します。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true}, function(err, docs) {
if (err) {
return console.log(err);
} else {
console.log(docs.rows);
}
});
上記のコードを remote_bulk_fetch.js として保存します。 上記のプログラムを実行すると、以下に示すように、データベース内のすべてのドキュメントの内容が表示されます。
[
{
id: '001',
key: '001',
value: { rev: '3-552920d1ca372986fad7b996ce365f5d' },
doc: {
_id: '001',
_rev: '3-552920d1ca372986fad7b996ce365f5d',
name: 'Raju',
age: 23,
designation: 'Designer'
}
},
{
id: '002',
key: '002',
value: { rev: '1-9af15cb11054ebe03a7816bf6c5e4128' },
doc: {
_id: '002',
_rev: '1-9af15cb11054ebe03a7816bf6c5e4128',
name: 'Robert',
age: 24,
Designation: 'Programmer'
}
},
{
id: '003',
key: '003',
value: { rev: '1-3033b5a78e915c52fd37325d42eb3935' },
doc: {
_id: '003',
_rev: '1-3033b5a78e915c52fd37325d42eb3935',
name: 'Rahim',
age: 25,
Designation: 'Programmer'
}
}
]
以下は、CouchDBサーバーに保存されている my_database という名前のデータベースに存在するすべてのドキュメントを更新する例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Preparing the document
docs = [{_id : '001', _rev: '3-552920d1ca372986fad7b996ce365f5d', age : 24, },
{_id : '002', _rev: '1-9af15cb11054ebe03a7816bf6c5e4128', age : 26, },
{_id : '003', _rev: '1-3033b5a78e915c52fd37325d42eb3935', age : 27}]
//Inserting Document
db.bulkDocs(docs, function(err, response) {
if (err) {
return console.log(err);
} else {
console.log(+"Documents Updated Successfully");
}
});
上記のコードを Remote_Update_Document.js という名前のファイルに保存します。 コマンドプロンプトを開き、以下に示すようにノードを使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Remote_Update_Document.js
これにより、CouchDBに保存されている my_database という名前のデータベースに存在するすべてのドキュメントのコンテンツが更新され、次のメッセージが表示されます。
Documents Updated Successfully
これで、 remote_bulk_fetch.js プログラムを実行すると、以下に示すように、更新されたドキュメントの値が表示されます。
[
{
id: '001',
key: '001',
value: { rev: '4-6bc8d9c7a60fed2ed1667ec0740c1f39' },
doc: {
_id: '001',
_rev: '4-6bc8d9c7a60fed2ed1667ec0740c1f39',
age: 25
}
},
{
id: '002',
key: '002',
value: { rev: '2-1aa24ce77d96bb9d2a0675cdf1e113e0' },
doc: {
_id: '002',
_rev: '2-1aa24ce77d96bb9d2a0675cdf1e113e0',
age: 26
}
},
{
id: '003',
key: '003',
value: { rev: '2-fa113149ba618eda77f73072974a2bc1' },
doc: {
_id: '003',
_rev: '2-fa113149ba618eda77f73072974a2bc1',
age: 27
}
}
]
PouchDB-バッチの削除
- bulkDocs()メソッドを使用して、PouchDBのドキュメントの配列を一度に削除できます。 そのためには、削除するドキュメントの配列を作成する必要があります。各ドキュメントには、 *_ id と _rev を含める必要があります。 これらに加えて、別のキーと値のペア _deleted:true を追加する必要があります。
PouchDBにローカルに保存されている my_database という名前のデータベースに、次の内容のdoc1、doc2、doc3という3つのドキュメントが含まれているとします。
doc1 = {_id: '001', name: 'Ram', age: 23, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Robert', age: 24, Designation: 'Programmer'}
doc3 = {_id: '003', name: 'Rahim', age: 25, Designation: 'Programmer'}
そして、3つのドキュメントをすべて削除する必要があると言います。 次に、最初に _rev 値を取得する必要があります。 したがって、次のコードを使用してこれらのドキュメントのコンテンツをフェッチします。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true},function(err, docs) {
if (err) {
return console.log(err);
} else {
console.log(docs.rows);
}
});
上記のコードを bulk_fetch.js として保存します。 上記のプログラムを実行すると、以下に示すように、データベース内のドキュメントの_idおよび_rev値が得られます。
[
{
id: '001',
key: '001',
value: { rev: '1-1604b0c3ff69dc1e261265fd60808404' }
},
{
id: '002',
key: '002',
value: { rev: '1-b5e49db7e984841bf12a13e3ee548125' }
},
{
id: '003',
key: '003',
value: { rev: '1-a7b342786ecc707aa91f3b321a177b51' }
}
]
これで、以下に示すように、それぞれの _id および _rev 値を使用してドキュメントを削除できます。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Preparing the document
docs = [{_id : '001', _rev: '2-77f3a9974dd578d12f3f2a33aae64c8d', _deleted : true },
{_id : '002', _rev: '2-43966007568ce9567c96422195fcfa0d', _deleted : true },
{_id : '003', _rev: '2-6c5349652527f4f39583ff14f23cd677',_deleted : true }]
//Deleting Documents
db.bulkDocs(docs, function(err, response) {
if (err) {
return console.log(err);
} else {
console.log(response+"Documents deleted Successfully");
}
});
上記のコードを Delete_All_Document.js という名前のファイルに保存します。 コマンドプロンプトを開き、以下に示すようにノードを使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Delete_All_Document.js
これにより、ローカルに保存されている my_database という名前のデータベースに存在するすべてのドキュメントが削除され、次のメッセージが表示されます。
Documents Deleted Successfully
ここで、 bulk_fetch.js プログラムを実行すると、以下に示すように、データベースが空であることを示す空のブレースをコンソールで確認できます。
[]
リモートデータベースからのバッチの削除
サーバー(CouchDB)にリモートで保存されているデータベースからすべてのドキュメントを更新できます。
そのためには、データベース名の代わりに、CouchDBのデータベースにパスを渡す必要があります。これには、読み取るドキュメントが含まれています。
例
CouchDBサーバーに my_database という名前のデータベースがあるとします。 次に、URL http://127.0.0.1:5984/_utils/indexl を使用してCouchDB内のデータベースのリストを確認すると、次のスクリーンショットが表示されます。
*my_database* という名前のデータベースを選択すると、次のスクリーンショットに示すように、3つのドキュメントが含まれていることがわかります。
以下は、CouchDBサーバーに保存されている my_database という名前のデータベースに存在するすべてのドキュメントを削除する例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Preparing the document
docs = [{_id : '001', _rev: '4-6bc8d9c7a60fed2ed1667ec0740c1f39', _deleted : true },
{_id : '002', _rev: '2-1aa24ce77d96bb9d2a0675cdf1e113e0', _deleted : true },
{_id : '003', _rev: '2-fa113149ba618eda77f73072974a2bc1',_deleted : true }]
//Deleting Documents
db.bulkDocs(docs, function(err, response) {
if (err) {
return console.log(err);
} else {
console.log("Documents deleted Successfully");
}
});
上記のコードを Remote_delete_AllDocuments.js という名前のファイルに保存します。 コマンドプロンプトを開き、以下に示すようにノードを使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Remote_Delete_AllDocuments.js
これにより、CouchDBに保存されている my_database という名前のデータベースに存在するすべてのドキュメントのコンテンツが削除され、次のメッセージが表示されます。
Documents Deleted Successfully
PouchDB-添付ファイルの追加
PouchDBの* putAttachment()*メソッドを使用して、バイナリオブジェクトをドキュメントに添付できます。
構文
- putAttachment()*の構文は次のとおりです。 このメソッドには、ドキュメントID、添付ファイルID、MIMEタイプを添付ファイルとともに渡す必要があります。 このメソッドは、オプションのコールバック関数も受け入れます。
db.putAttachment( docId, attachmentId, attachment, type, [callback] );
ブロブまたはバッファーオブジェクトを使用して添付ファイルを準備できます。ブラウザーでの作業中に blob を使用し、 Node.js での作業中に buffer を使用します。Node.jsでプログラムのデモを行うため、バッファーを使用します。ドキュメントを準備するオブジェクト。
例
以下は、* putAttachment()メソッドを使用して、PouchDBの *my_database という名前のデータベース内に添付ファイル付きのドキュメントを作成する例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object var db = new PouchDB('my_database');
//Preparing the attachment
var my_attachment = new Buffer(['Welcome to finddevguides'], {type: 'text/plain'});
//Adding attachment to a document
db.putAttachment('001', 'att_1.txt', my_attachment, 'text/plain', function(err, res) {
if (err) {
return console.log(err);
} else {
console.log(res+"Attachment added successfully")
}
});
上記のコードを Add_Attachment.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Add_Attachment.js
これにより、PouchDBに保存されている my_database という名前のデータベースに添付ファイルを追加する空のドキュメントが作成され、次のメッセージが表示されます。
Attachment added successfully
次のコードを使用してドキュメントを読むと、添付ファイルが追加されているかどうかを確認できます。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object var db = new PouchDB('my_database');
//Reading the Document
db.get('001',{attachments: true}, function(err, doc) {
if (err) {
return console.log(err);
} else {
console.log(doc);
}
});
上記のコードを read_doc.js として保存して実行します。 このプログラムを実行すると、ドキュメントの次の内容が表示されます。
{
_attachments: {
att_1.txt: {
content_type: 'text/plain',
digest: 'md5-k7iFrf4NoInN9jSQT9WfcQ==',
data: 'AA=='
}
},
_id: '001',
_rev: '1-620fd5f41d3328fcbf9ce7504338a51d'
}
既存のドキュメントへの添付ファイルの追加
IDが「 002 」の my_database PouchDBという名前のデータベースにドキュメントがあるとします。 以下に示すように、id値を 002 に変更して read_doc.js を実行すると、その内容を取得できます。
{
name: 'Raju',
age: 23,
designation: 'Designer',
_id: '002',
_rev: '1-05ca7b5f3f4762a9fb2d119cd34c8d40'
}
これで、 _ rev 値を使用してこのドキュメントに添付ファイルを追加できます。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object var db = new PouchDB('my_database');
//Adding attachment to existing document
var my_attachment = new Buffer (['Welcome to finddevguides'], {type: 'text/plain'});
rev = '1-05ca7b5f3f4762a9fb2d119cd34c8d40';
db.putAttachment('002', 'att_1.txt', rev, my_attachment, 'text/plain', function(err, res) {
if (err) {
return console.log(err);
} else {
console.log (res + "Attachment added successfully")
}
});
上記のコードを Add_Attachment_to_doc.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Add_Attachment_to_doc.js
これにより、指定したドキュメントに添付ファイルが追加され、次のメッセージが表示されます。
Attachment added successfully
*read_doc.js* のid値を *002* に変更して実行すると、次の出力が得られます。
{
name: 'Raju',
age: 23,
designation: 'Designer',
_attachments: {
att_1: {
content_type: 'text/plain',
digest: 'md5-k7iFrf4NoInN9jSQT9WfcQ==',
data: 'AA=='
}
},
_id: '002',
_rev: '2-3bb4891b954699bce28346723cc7a709'
}
リモートドキュメントへの添付ファイルの追加
サーバー(CouchDB)にリモートで保存されているデータベースに存在するドキュメントに添付ファイルを追加することもできます。
そのためには、データベース名の代わりに、CouchDBのデータベースにパスを渡す必要があります。これには、読み取るドキュメントが含まれています。
例
CouchDBサーバーに my_database という名前のデータベースがあるとします。 次に、URL http://127.0.0.1:5984/_utils/indexl を使用してCouchDB内のデータベースのリストを確認すると、次のスクリーンショットが表示されます。
また、 my_database という名前のデータベースを選択すると、次のようにその内容を表示できます。
以下は、CouchDBサーバーに保存されている my_database という名前のデータベースに保存されているドキュメント 001 に添付ファイルを追加する例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Adding attachment to existing document
var my_attachment = new Buffer (['Welcome to finddevguides'], {type: 'text/plain'});
rev = '1-36c34fdcf29a652876219065f9681602';
db.putAttachment('001', 'att_1.txt',rev, my_attachment, 'text/plain', function(err, res) {
if (err) {
return console.log(err);
} else {
console.log (res+ "Attachment added successfully")
}
});
上記のコードを Remote_Add_Attachment.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Remote_Add_Attachment.js
これにより、指定したドキュメントに添付ファイルが追加され、次のメッセージが表示されます。
Attachment added successfully
これで、ドキュメントを検証すると、次のスクリーンショットに示すように、追加された添付ファイルを確認できます。
PouchDB-添付ファイルの取得
- getAttachment()*メソッドを使用して、PouchDBから添付ファイルを取得できます。 このメソッドは、常にblobまたはbufferオブジェクトを返します。
構文
以下は* getAttachment()*の構文です。 このメソッドには、ドキュメントIDと添付IDを渡す必要があります。 このメソッドは、オプションのコールバック関数も受け入れます。
db.getAttachment( docId, attachmentId, [callback] );
例
以下は、* getAttachment()メソッドを使用して、PouchDBに保存されているドキュメントの添付ファイルを取得する例です。 このコードを使用して、ドキュメント *001 から添付ファイル att_1.txt を取得しようとしています。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Retrieving an attachment from a document
db.getAttachment('001', 'att_1.txt', function(err, blob_buffer) {
if (err) {
return console.log(err);
} else {
console.log(blob_buffer);
}
});
上記のコードを Retrieve_Attachment.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Retrieve_Attachment.js
これにより、ドキュメントの添付ファイルが取得され、以下に示すようにコンソールに表示されます。
<Buffer 00>
リモートドキュメントから添付ファイルを取得する
サーバー(CouchDB)にリモートで保存されているデータベースに存在するドキュメントの添付ファイルを取得することもできます。
そのためには、データベース名の代わりに、CouchDBのデータベースにパスを渡す必要があります。これには、読み取るドキュメントが含まれています。
例
CouchDBサーバーに my_database という名前のデータベースがあるとします。 次に、URL http://127.0.0.1:5984/_utils/indexl を使用してCouchDB内のデータベースのリストを確認すると、次のスクリーンショットが表示されます。
*my_database* という名前のデータベースを選択すると、以下に示すようにその内容を表示できます。
以下に示すように、このドキュメントに添付ファイルがあるとします。
以下は、CouchDBサーバーに保存されている my_database という名前のデータベースに存在するドキュメント 001 の添付ファイルを取得する例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Retrieving an attachment from a document
db.getAttachment('001', 'att_1.txt', function(err, blob_buffer) {
if (err) {
return console.log(err);
} else {
console.log(blob_buffer);
}
});
上記のコードを Remote_Retrieve_Attachment.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Remote_Retrieve_Attachment.js
これにより、ドキュメントの添付ファイルが取得され、以下に示すようにコンソールに表示されます。
<Buffer 00>
PouchDB-添付ファイルの削除
- removeAttachment()*メソッドを使用して、PouchDBから添付ファイルを削除できます。
構文
以下は* removeAttachment()*メソッドの構文です。 このメソッドには、ドキュメントID、添付ファイルID、および_rev値を渡す必要があります。 このメソッドは、オプションのコールバック関数も受け入れます。
db.removeAttachment ( docId, attachmentId, rev, [callback] );
例
PouchDBにID 001 のドキュメントがあり、以下に示すように、ID、名前、年齢、従業員の指定、および添付ファイルが含まれているとします。
{
name: 'Raju',
age: 23,
designation: 'Designer',
_attachments: {
'att_1.txt': {
content_type: 'text/plain',
digest: 'md5-k7iFrf4NoInN9jSQT9WfcQ==',
data: 'AA=='
}
},
_id: '001',
_rev: '2-cdec6c9f45ddbee7d456945654742d43'
}
以下は、* removeAttachment()メソッドを使用して、PouchDBに保存されているこのドキュメント *001 の添付ファイルを削除する例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my');
db.removeAttachment('001', 'att_1.txt', '2-cdec6c9f45ddbee7d456945654742d43',
function(err, res) {
if (err) {
return console.log(err);
} else {
console.log(res+"Attachment Deleted successfully")
}
});
上記のコードを Remove_Attachment.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Remove_Attachment.js
これにより、ドキュメントの添付ファイルが削除され、以下に示すようにコンソールにメッセージが表示されます。
Attachment deleted successfully
削除後、次のコードを実行してドキュメントの内容を確認できます。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_d');
//Reading the Document
db.get('001',{attachments: true}, function(err, doc) {
if (err) {
return console.log(err);
} else {
console.log(doc);
}
});
このコードを read.js として保存して実行します。 以下に示すように、実行すると、添付ファイルを削除した後にドキュメントのコンテンツを取得します。
{
name: 'Raju',
age: 23,
designation: 'Designer',
_id: '001',
_rev: '3-da775487a6ed0495f2e49c543384f8e8'
}
リモートドキュメントから添付ファイルを削除する
サーバー(CouchDB)にリモートで保存されているデータベース内の既存のドキュメントの添付ファイルを削除できます。
そのためには、データベース名の代わりに、CouchDBのデータベースにパスを渡す必要があります。これには、読み取るドキュメントが含まれています。
例
CouchDBサーバーに my_database という名前のデータベースがあるとします。 次に、URL http://127.0.0.1:5984/_utils/indexl を使用してCouchDB内のデータベースのリストを確認すると、次のスクリーンショットが表示されます。
また、 my_database という名前のデータベースを選択すると、次のようにその内容を表示できます。
以下に示すように、このドキュメントに添付ファイルがあるとします。
以下は、CouchDBサーバーに保存されている my_database という名前のデータベースに存在するドキュメント 001 の上記の添付ファイルを削除する例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
db.removeAttachment('001', 'att_1.txt', '2-049f1c4ffa54576ec0947b65e34de423',
function(err, res) {
if (err) {
return console.log(err);
} else {
console.log(res+"Attachment Deleted successfully")
}
});
上記のコードを Remote_Delete_Attachment.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Remote_Delete_Attachment.js
これにより、既存の添付ファイルが削除され、次のメッセージが表示されます。
Attachment Deleted successfully
もう一度ドキュメントにアクセスすると、次のスクリーンショットに示すように、添付ファイルが削除されたことがわかります。
PouchDB-レプリケーション
PouchDBの最も重要な機能の1つはレプリケーションです。 データベースのコピーを作成できます。 ローカルに保存されたPouchDBインスタンスまたはリモートに保存されたCouchDBインスタンスのいずれかを複製できます。
構文
以下は、PouchDBでデータベースを複製する構文です。 ここでは、*ソースデータベース*のコピーがターゲットです。 このメソッドには、ソースデータベースと宛先データベースの場所を文字列形式で直接渡すか、それらを表すオブジェクトを渡すことができます。
PouchDB.replicate(source, target, [options])
ソースとターゲットの両方は、PouchDBインスタンスまたはCouchDBインスタンスのいずれかです。
LocalDBをCouchDBに複製する
PouchDBに sample_database という名前のデータベースがあり、次のような内容を持つ3つのドキュメントdoc1、doc2、doc3が含まれているとします。
doc1 = {_id: '001', name: 'Ram', age: 23, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Robert', age: 24, Designation: 'Programmer'}
doc3 = {_id: '003', name: 'Rahim', age: 25, Designation: 'Programmer'}
以下は、CouchDBにローカルに保存されている sample_database という名前のデータベースのコピーを作成する例です。
//Requiring the package
var PouchDB = require('PouchDB');
var localdb = 'sample_database';
//Creating remote database object
var remotedb = 'http://localhost:5984/sample_database';
//Replicating a local database to Remote
PouchDB.replicate(localDB, remoteDB);
console.log ("Database replicated successfully");
上記のコードを Replication_example.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Replication_example.js
これにより、CouchDBインスタンスにsample_databaseという名前のデータベースのコピーが作成され、以下に示すようにコンソールにメッセージが表示されます。
Database replicated successfully
次のリンク http://127.0.0.1:5984/_utils/indexl をクリックすると、データベースがCouchDBインスタンスに複製されているかどうかを確認できます。
クリックすると、CouchDBのデータベースのリストが表示されます。 データベース sample_database のコピーがここで作成されることも確認できます。
複製されたデータベースを選択すると、以下に示すようにその内容を表示できます。
CouchDBからPouchDBへの複製
CouchDBに Remote_Database という名前のデータベースがあり、3つのドキュメント、doc1、doc2、およびdoc3が含まれており、以下に示す内容があるとします。
doc1 = {_id: '001', name: 'Geeta', age: 25, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Zara Ali', age: 24, Designation: 'Manager'}
doc3 = {_id: '003', name: 'Mary', age: 23, Designation: 'Admin'}
以下は、ローカルストレージのCouchDBに保存されている Remote_Database という名前のデータベースのコピーを作成する例です。
//Requiring the package
var PouchDB = require('PouchDB');
var localdb = 'sample_database';
var remotedb = 'http://localhost:5984/sample_database1';
//Replicating a local database to Remote
PouchDB.replicate(remotedb, localdb);
console.log("Database replicated successfully");
上記のコードを Replication_example2.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Replication_example2.js
これにより、PouchDBインスタンスに remote_database という名前のデータベースのコピーが作成され、以下に示すようにコンソールにメッセージが表示されます。
Database replicated successfully
次のコードを実行することで、データベースがPouchインスタンスに複製されているかどうかを確認できます。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('remote_database');
//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true, attachments: true}, function(err, docs) {
if (err) {
return console.log(err);
} else {
console.log(docs.rows);
}
});
上記のコードの実行時にデータベースが複製される場合、以下に示すように複製されたデータベースの内容を取得します。
[
{
id: '001',
key: '001',
value: { rev: '1-23cf3767e32a682c247053b16caecedb' },
doc: {
name: 'Geeta',
age: 25,
Designation: 'Programmer',
_id: '001',
_rev: '1-23cf3767e32a682c247053b16caecedb'
}
},
{
id: '002',
key: '002',
value: { rev: '1-d5bcfafbd4d4fae92fd7fc4fdcaa3a79' },
doc: {
name: 'Zara Ali',
age: 24,
Designation: 'Manager',
_id: '002',
_rev: '1-d5bcfafbd4d4fae92fd7fc4fdcaa3a79'
}
},
{
id: '003',
key: '003',
value: { rev: '1-c4cce025dbd30d21e40882d41842d5a4' },
doc: {
name: 'Mary',
age: 23,
Designation: 'Admin',
_id: '003',
_rev: '1-c4cce025dbd30d21e40882d41842d5a4'
}
}
]
PouchDB-同期
PouchDBにローカルに保存されているデータベースを、CouchDBに保存されているデータベースと同期できます。 前の章で、PouchDBを使用してデータベースを複製する方法を見てきました。 そこで、メソッド* PouchDB.replicate(source、destination)*を使用しました。
これに加えて、以下に示すように* replicate.to()および replicate.from()*メソッドを使用して、ローカルデータベースからリモートデータベースに、およびリモートデータベースからローカルデータベースにデータを複製することもできます。 。
//Replicating data from local database to remote database
localDB.replicate.to(remoteDB);
//Replicating data from remote database to local database
localDB.replicate.from(remoteDB);
ここで、 localDB はPouchDBにローカルに保存されているデータベースのオブジェクトであり、 remoteDB はCouchDBに保存されているデータベースのオブジェクトです。
例
PouchDBに local_database という名前のデータベースがあり、次のような内容を持つ3つのドキュメント、doc1、doc2、doc3が含まれているとします。
doc1 = {_id: '003', name: 'Ram', age: 26, Designation: 'Programmer'}
doc2 = {_id: '004', name: 'Robert', age: 27, Designation: 'Programmer'}
doc3 = {_id: '005', name: 'Rahim', age: 28, Designation: 'Programmer'}
また、CouchDBには Remote_Database という名前のデータベースがあり、次のような内容を持つ2つのドキュメントdoc1、doc2が含まれています。
doc1 = {_id: '001', name: 'Geeta', age: 25, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Zara Ali', age: 24, Designation: 'Manager'}
次に、これら2つのデータベースを同期する例を示します。1つはPouchDBに、もう1つは* replicate.to()および replicate.from()*メソッドを使用してCouchDBに格納されます。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating local database object
var localDB = new PouchDB('local_database');
//Creating remote database object
var remoteDB = new PouchDB('http://localhost:5984/remote_database');
//Synchronising both databases
localDB.replicate.to(remoteDB);
remoteDB.replicate.from(localDB);
console.log("Databases synchronized successfully");
上記のコードを Synchronising_databases.js という名前のファイルに保存します。 以下に示すように、コマンドプロンプトを開き、 node を使用してJavaScriptファイルを実行します。
C:\PouchDB_Examples >node Synchronising_databases.js
これにより、2つのデータベースremoteDBとlocalDBが同期され、以下に示すようにコンソールにメッセージが表示されます。
Databases synchronized successfully.
2つのデータベースを同期した後、 http://127.0.0.1:5984/_utils/indexl にアクセスして remote_database を選択します。 以下に示すように、ローカルデータベース(003、004、005)のドキュメントがこのデータベースにコピーされたことを確認できます。
同様に、PouchDBに保存されている local_database の内容を取得すると、CouchDBに保存されているデータベースのドキュメントがここにコピーされたことを確認できます。
[
{
id: '001',
key: '001',
value: { rev: '1-23cf3767e32a682c247053b16caecedb' },
doc: {
name: 'Geeta',
age: 25,
Designation: 'Programmer',
_id: '001',
_rev: '1-23cf3767e32a682c247053b16caecedb'
}
},
{
id: '002',
key: '002',
value: { rev: '1-d5bcfafbd4d4fae92fd7fc4fdcaa3a79' },
doc: {
name: 'Zara Ali',
age: 24,
Designation: 'Manager',
_id: '002',
_rev: '1-d5bcfafbd4d4fae92fd7fc4fdcaa3a79'
}
},
{
id: '003',
key: '003',
value: { rev: '1-bf4619471ac346fdde46cfa8fbf3587f' },
doc: {
name: 'Ram',
age: 26,
Designation: 'Programmer',
_id: '003',
_rev: '1-bf4619471ac346fdde46cfa8fbf3587f'
}
},
{
id: '004',
key: '004',
value: { rev: '1-29b8f803958c994e3eb37912a45d869c' },
doc: {
name: 'Robert',
age: 27,
Designation: 'Programmer',
_id: '004',
_rev: '1-29b8f803958c994e3eb37912a45d869c'
}
},
{
id: '005',
key: '005',
value: { rev: '1-0eb89f71998ffa8430a640fdb081abd2' },
doc: {
name: 'Rahim',
age: 28,
Designation: 'Programmer',
_id: '005',
_rev: '1-0eb89f71998ffa8430a640fdb081abd2'
}
}
]
以下に示すように、2つのメソッド* replicate.to()および replicate.from()の代わりに、PouchDBが提供する sync()*メソッドを使用して、上記のプログラムを書き換えることができます。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating local database object
var localDB = new PouchDB('local');
//Creating remote database object
var remoteDB = new PouchDB('http://localhost:5984/remote_database');
//Synchronising Remote and local databases
localDB.sync(remoteDB, function(err, response) {
if (err) {
return console.log(err);
} else {
console.log(response);
}
});
上記のプログラムを実行すると、次のメッセージを表示する2つのデータベースを同期します。
{
push: {
ok: true,
start_time: Fri Mar 25 2016 15:54:37 GMT+0530 (India Standard Time),
docs_read: 6,
docs_written: 6,
doc_write_failures: 0,
errors: [],
last_seq: 10,
status: 'complete',
end_time: Fri Mar 25 2016 15:54:37 GMT+0530 (India Standard Time)
},
pull: {
ok: true,
start_time: Fri Mar 25 2016 15:54:37 GMT+0530 (India Standard Time),
docs_read: 0,
docs_written: 0,
doc_write_failures: 0,
errors: [],
last_seq: 2,
status: 'complete',
end_time: Fri Mar 25 2016 15:54:37 GMT+0530 (India Standard Time)
}
}
PouchDB-その他
この章では、PouchDBからのバルクデータの圧縮および取得などの概念について説明します。
圧縮
- compact()*メソッドを使用して未使用のデータを削除することにより、データベースのサイズを縮小できます。 この方法を使用して、ローカルデータベースとリモートデータベースを圧縮できます。
以下は、PouchDBでの* compact()*メソッドの使用法を示す例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('sample_database');
db.compact(function (err, result) {
if (err) {
return console.log(err);
} else {
console.log(result);
}
});
BulkGetメソッド
- bulkGet()*メソッドを使用して、ドキュメントのセットを一括で取得できます。 このメソッドには、一連のidと_revを渡す必要があります。
以下は、PouchDBでの* bulkGet()*メソッドの使用法を示す例です。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Preparing documents
//Inserting Document
db.bulkGet({docs: [
{ id: "001", rev: "1-5dc593eda0e215c806677df1d12d5c47"},
{ id: "002", rev: "1-2bfad8a9e66d2679b99c0cab24bd9cc8"},
{ id: "003", rev: "1-7cff4a5da1f97b077a909ff67bd5b047"} ]}, function(err, result) {
if (err) {
return console.log(err);
} else {
console.log(result);
}
});