PouchDB-クイックガイド

この章では、PouchDBの概要とその機能、およびその機能について説明します。

PouchDBとは何ですか?

PouchDBはオープンソースです in-browser database APIJavaScriptで書かれています。Couch DB&minuss;をモデルにしています。NoSQLデータベース。このAPIを使用して、オフラインおよびオンラインで動作するアプリケーションを構築できます。内部的にWebSQLとIndexedDBを使用してデータを格納します。

それはどのように機能しますか?

PouchDBでは、アプリケーションがオフラインの場合、データはブラウザのWebSQLとIndexedDBを使用してローカルに保存されます。アプリケーションがオンラインに戻ると、CouchDBおよび互換性のあるサーバーと同期されます。

PouchDBを使用すると、違いに気付くことなく、ローカルデータベースとリモートデータベースの両方とシームレスに通信できます。

PouchDBの機能

PouchDBの機能は次のとおりです-

  • Cross Browser − PouchDBが提供するAPIはすべての環境で同じように機能するため、さまざまなブラウザーでPouchDBアプリケーションを実行できます。

  • Light Weight − PouchDBは非常に軽量なAPIであり、スクリプトタグを使用するだけで簡単に組み込むこともできます。

  • Easy to Learn −プログラミング言語の予備知識がある場合は、PouchDBを簡単に学ぶことができます。

  • Open Source − PouchDBはオープンソースアプリケーションであり、GitHubで入手できます。

PouchDBの利点

PouchDBの利点は次のとおりです-

  • PouchDBはブラウザ内にあるため、ネットワーク経由でクエリを実行する必要はありません。これにより、クエリの実行が高速化されます。

  • サポートされているサーバーのいずれかとデータを同期できます。これにより、アプリをオンラインとオフラインの両方で実行できます。

PouchDBをサポートするブラウザ

以下は、PouchDBをサポートするブラウザです-

  • Firefox 29以降(FirefoxOSおよびFirefoxfor Androidを含む)
  • Chrome30以降
  • Safari 5+
  • Internet Explorer10以降
  • Opera 21+
  • Android4.0以降
  • iOS 7.1以降
  • Windows Phone 8+

この章では、PouchDBをダウンロードしてシステムにインストールする方法について説明します。

PouchDBのインストール

PouchDBを使用するには、ファイルをダウンロードする必要があります .jsファイルを作成し、スクリプトに含めます。PouchDBをインストールする手順は次のとおりです。

ステップ1

次のリンクをクリックして、PouchDBWebサイトのホームページにアクセスします-

https://PouchDB.com/

ステップ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を使用したポーチのインストール

PouchDBをNode.jsモジュールとしてインストールすることもできます。以下は、Node.jsを使用してPouchDBをインストールする手順です。

ステップ1

私たちのインストールNode.jsのセクションに与えられた手順に従って、Node.jsのをインストールしたコーヒースクリプトのチュートリアルを。

ステップ2

コマンドプロンプトを開き、次のコマンドを実行します。これにより、PouchDBノードモジュールがシステムにインストールされます。

npm install --save PouchDB

CouchDBのダウンロード

オフラインの場合、PouchDBはデータをローカルに保存し、アプリのように機能します。互換性のあるサーバーに接続することで、オンラインでアクセスできます。PouchDBはCouchDBに接続できることがわかっているので、CouchDBもインストールしましょう。以下は、CouchDBをインストールする手順です。

ステップ1

CouchDBの公式ウェブサイトは http://couchdb.apache.org。指定されたリンクをクリックすると、次のスクリーンショットに示すように、CouchDB公式Webサイトのホームページが表示されます。

ステップ2

ダウンロードボタンをクリックすると、さまざまな形式のCouchDBのダウンロードリンクが提供されているページが表示されます。次のスナップショットは同じことを示しています。

ステップ3

Windowsシステムのダウンロードリンクを選択し、提供されているミラーの1つを選択してダウンロードを開始します。

CouchDBのインストール

Windows実行可能ファイル setup-couchdb-1.6.1_R16B02.exeファイルがシステムにダウンロードされます。セットアップファイルを実行し、インストールを続行します。

システムにCouchDBを正常にインストールした後、CouchDBがインストールされたフォルダーを開き、binフォルダーに移動し、次の名前のスクリプトファイルを実行してサーバーを起動します。 couchdb.bat

インストール後、次のリンクにアクセスして、CouchDBの組み込みWebインターフェースを開きます- http://127.0.0.1:5984/。すべてがうまくいけば、これはあなたに次の出力を持つウェブページを与えるでしょう。

{                 
   "couchdb":"Welcome","uuid":"c8d48ac61bb497f4692b346e0f400d60",
   "version":"1. 6.1",
   "vendor": {
      "version":"1.6.1","name":"The Apache Software Foundation"
   } 
}

次のURLを使用して、CouchDBWebインターフェースと対話できます-

http://127.0.0.1:5984/_utils/

これは、CouchDBのWebインターフェースであるFutonのインデックスページを示しています。

PouchDBコンストラクターを使用して、PouchDBにデータベースを作成できます。

構文

以下は、PouchDBコンストラクターを使用する構文です。これには、データベースの名前をパラメーターとして渡す必要があります。

new PouchDB(Database_name)

を使用してPouchDBにデータベースを作成するには node、まず第一に、あなたはを使用してPouchDBパッケージを要求する必要があります require() 次に、次の例に示すようにデータベースを作成できます。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples>node Create_Database.js

これにより、データベースがローカルに作成され(現在のディレクトリにフォルダが表示されます)、次のメッセージが表示されます。

Database created Successfully.

次の名前のメソッドを使用して、データベースに関する基本情報を取得できます。 info()

構文

以下は、を使用する構文です。 info()PouchDBのメソッド。このメソッドは、コールバック関数を受け入れます。

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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

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() 方法。

構文

以下は、を使用する構文です。 db.destroy()方法。このメソッドは、コールバック関数をパラメーターとして受け入れます。

db.destroy()

以下は、を使用してPouchDBのデータベースを削除する例です。 destroy()方法。ここでは、という名前のデータベースを削除しています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. コマンドプロンプトを開き、を使用してJavaScriptファイルを実行します node 以下に示すように。

C:\PouchDB_Examples >node Delete_Database.js

これにより、という名前のデータベースが削除されます my_database これはローカルに保存され、次のメッセージを表示します。

Database Deleted

リモートデータベースの削除

同様に、サーバー(CouchDB)にリモートで保存されているデータベースを削除できます。

これを行うには、データベース名の代わりに、CouchDBで削除する必要のあるデータベースへのパスを渡す必要があります。

名前の付いたデータベースがあるとします my_databaseCouchDBサーバーで。次に、URLを使用してCouchDB内のデータベースのリストを確認するとhttp://127.0.0.1:5984/_utils/index.html 次のスクリーンショットが表示されます。

以下は、という名前のデータベースを削除する例です。 my_database これはCouchDBサーバーに保存されます。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >Remote_Database_Delete.js

これにより、指定されたデータベースがPouchDBから削除され、次のメッセージが表示されます。

Database Deleted

検証

上記のプログラムを実行した後、URLに再度アクセスすると、次のスクリーンショットが表示されます。ここでは、2つのデータベースしか観察できません。my_database 削除されました。

PouchDBでドキュメントを作成するには、 db.put() 方法。

構文

以下は、PouchDBのdb.put()メソッドを使用する構文です。PouchDBで作成されるドキュメントを変数に格納し、パラメーターとしてこのメ​​ソッドに渡すことができます。さらに、このメソッドは、パラメーターとしてコールバック(オプション)関数も受け入れます。

db.put(document, callback)

以下は、PouchDBでドキュメントを作成する例です。 put()方法。作成するドキュメントは、コンマで区切られたキーと値のペアのセットである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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Create_Document.js

これにより、PouchDBデータベースに指定されたドキュメントが作成されます。 my_database、ローカルに保存され、次のメッセージが表示されます。

Document created Successfully

リモートデータベースへのドキュメントの挿入

サーバー(CouchDB)にリモートで保存されているデータベースにドキュメントを挿入することもできます。

これを行うには、データベース名の代わりに、CouchDBでドキュメントを作成するデータベースへのパスを渡す必要があります。

名前の付いたデータベースがあるとします my_databaseCouchDBサーバーで。次に、URLを使用してCouchDB内のデータベースのリストを確認するとhttp://127.0.0.1:5984/_utils/index.html 次のスクリーンショットが表示されます。

さて、あなたがという名前のデータベースをクリックすると my_database、次のスクリーンショットに示すように、空のデータベースが見つかります。

以下は、という名前のデータベースにドキュメントを挿入する例です。 my_database これはCouchDBサーバーに保存されます。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Remote_Create_Document.js

これにより、PouchDBデータベースに指定されたドキュメントが作成されます。 my_database これはCouchDBに保存され、次のメッセージを表示します。

Document created Successfully

検証

上記のプログラムを実行した後、 my_database ここでも、次のスクリーンショットに示すように作成されたドキュメントを確認できます。

PouchDBのドキュメントの内容は、を使用して読み取り/取得できます。 db.get() 方法。

構文

以下は、を使用する構文です。 db.get()PouchDBのメソッド。このメソッドは、document id およびオプションのコールバック関数。

db.get(document, callback)

以下は、PouchDBでドキュメントの内容を読み取る例です。 get() 方法。

//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のデータベースへのパスを渡す必要があります。

ある名前のデータベースがあるとします my_databaseCouchDBサーバーで。次に、URLを使用してCouchDB内のデータベースのリストを確認するとhttp://127.0.0.1:5984/_utils/index.html 次のスクリーンショットが表示されます。

名前の付いたデータベースをクリックする my_database次のスクリーンショットを見ることができます。ここで、このデータベースにIDを持つドキュメントが含まれていることがわかります。001

以下は、IDが「」であるドキュメントの内容を読み取る例です。001」という名前のデータベースに存在します my_database、CouchDBサーバーに保存されます。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Remote_Read_Document.js

これは、という名前のデータベースに存在する特定のドキュメントのコンテンツを読み取ります my_databaseこれはCouchDBに保存されます。コンソールに次のメッセージが表示されます。

{ 
   _id: '001',
   _rev: '3-552920d1ca372986fad7b996ce365f5d',
   name: 'Raju',
   age: 23,
   designation: 'Designer' 
}

いつでも、新しいフィールドであるPouchDBにドキュメントを作成します _rev が生成され、それはとして知られています revision marker。ザ・_revの値は一意の乱数であり、ドキュメントに変更を加えるたびに、 _rev 変更されます。

PouchDBの既存のドキュメントは、 (_rev)。そのためには、まず最初に_rev更新するドキュメントの値。次に、取得したコンテンツとともに更新するコンテンツを配置します。_rev 新しいドキュメントに値を入力し、最後にこのドキュメントをPouchDBに挿入します。 put() 方法。

PouchDBにIDを持つドキュメントがあると仮定します 001人の詳細があります。このドキュメントを更新するには、そのリビジョン番号が必要です。したがって、ドキュメントのコンテンツを取得するには、次のコードを使用します。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\Pouch_Examples>node Update_Document.js

これにより、という名前のデータベースに存在する特定のドキュメントのコンテンツが更新されます。 my_databaseこれはローカルに保存されます。コンソールに次のメッセージが表示されます。

{ 
   name: 'Raju',
   age: 26,
   designation: 'Designer',
   _id: '001',
   _rev: '2-61b523ccdc4e41a8435bdffbb057a7a5' 
}

リモートデータベース内のドキュメントの更新

サーバー(CouchDB)にリモートで保存されているデータベース内の既存のドキュメントを更新することもできます。

これを行うには、データベース名の代わりに、更新されるドキュメントを含むCouchDB内のデータベースへのパスを渡す必要があります。

名前の付いたデータベースがあるとします my_databaseCouchDBサーバーで。次に、URLを使用してCouchDB内のデータベースのリストを確認するとhttp://127.0.0.1:5984/_utils/index.html 次のスクリーンショットが表示されます。

名前の付いたデータベースをクリックする my_database、次のスクリーンショットを見ることができます。ここで、このデータベースにIDを持つドキュメントが含まれていることがわかります。001

以下は、IDが「」であるドキュメントの経過時間を更新する例です。001」という名前のデータベースに存在します my_database これはCouchDBサーバーに保存されます。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Remote_Update_Document.js

これにより、という名前のデータベースに存在する特定のドキュメントのコンテンツが更新されます。 my_databaseこれはCouchDBに保存されます。コンソールに次のメッセージが表示されます。

{
   _id: '001',
   _rev: '2-b9640bffbce582c94308905eed8bb545',
   name: 'Raju',
   age: 26,
   designation: 'Designer' 
}

PouchDBに存在するデータベースから、を使用してドキュメントを削除できます。 db.remove() 方法。

構文

以下は、を使用する構文です。 db.remove()PouchDBのメソッド。この方法には、合格する必要がありますid そして _rev次のコードに示すように、既存のドキュメントを削除します。このメソッドは、オプションのコールバック関数を受け入れます。idと_revの代わりに完全なドキュメントを渡すこともできます。

db. get ( docId, docRev, [callback] )
or
db. get ( docId, docRev, [callback] )

PouchDBにIDを持つドキュメントがあると仮定します 001人の詳細があります。このドキュメントを削除するには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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Delete_Document.js

これにより、という名前のデータベースに存在する特定のドキュメントのコンテンツが削除されます。 my_databaseこれはローカルに保存されます。次のメッセージが表示されます。

Document deleted successfully

リモートデータベースからのドキュメントの削除

サーバー(CouchDB)にリモートで保存されているデータベースから既存のドキュメントを削除することもできます。

これを行うには、データベース名の代わりに、読み取るドキュメントが含まれているCouchDBのデータベースへのパスを渡す必要があります。

名前の付いたデータベースがあるとします my_databaseCouchDBサーバーで。次に、URLを使用してCouchDB内のデータベースのリストを確認するとhttp://127.0.0.1:5984/_utils/index.html 次のスクリーンショットが表示されます。

名前の付いたデータベースをクリックする my_database次のスクリーンショットを見ることができます。ここでは、データベースにIDを持つドキュメントが含まれていることがわかります。001

以下は、IDが「」のドキュメントのコンテンツを削除する例です。001」という名前のデータベースに存在します my_database これはCouchDBサーバーに保存されます。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Remote_Delete_Document.js

これにより、という名前のデータベースに存在する特定のドキュメントが削除されます my_databaseこれはCouchDBに保存されます。次のメッセージが表示されます。

Document deleted successfully

PouchDBでドキュメントの配列(バッチ)を作成するには、 db.bulkDocs()方法。ドキュメントの作成中に、_id値を指定しない場合はこのメソッドを使用して、PouchDBが代わりにすべてのドキュメントの一意のIDを一括で生成します。

構文

以下は、を使用する構文です。 db.bulkDocs()PouchDBのメソッド。PouchDBで作成されるすべてのドキュメントを配列に格納し、それをパラメーターとしてこのメ​​ソッドに渡すことができます。それに加えて、このメソッドはパラメーターとしてコールバック(オプション)関数も受け入れます。

db.bulkDocs(docs, [options], [callback])

以下は、PouchDBで複数のドキュメントを作成する例です。 db.bulkDocs ()方法。作成するドキュメントは、コンマで区切られたキーと値のペアのセットである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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Create_Batch.js

これにより、PouchDBデータベースに指定されたドキュメントが作成されます。 my_databaseこれはローカルに保存されます。次のメッセージが表示されます。

Documents created Successfully

リモートデータベースへのバッチの挿入

サーバー(CouchDB)にリモートで保存されているデータベースにドキュメントの配列を挿入できます。

そのためには、データベース名の代わりに、CouchDBでドキュメントを作成するデータベースへのパスを渡す必要があります。

名前の付いたデータベースがあるとします my_databaseCouchDBサーバーで。次に、URLを使用してCouchDB内のデータベースのリストを確認するとhttp://127.0.0.1:5984/_utils/index.html 次のスクリーンショットが表示されます。

以下は、という名前のデータベースにドキュメントの配列を挿入する例です。 my_database これはCouchDBサーバーに保存されます。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Remote_Create_Batch.js

これにより、PouchDBデータベースに指定されたドキュメントが作成されます。 my_databaseこれはCouchDBに保存されます。次のメッセージが表示されます。

Document created Successfully

検証

上記のプログラムを実行した後、 my_database ここでも、次のスクリーンショットに示すように作成されたドキュメントを確認できます。

を使用して、PouchDBのデータベースから複数の/バルクドキュメントを読み取り/取得できます。 allDocs() 方法。

構文

以下は、を使用する構文です。 db.allDocs()PouchDBのメソッド。このメソッドは、オプションのコールバック関数を受け入れます。

db.allDocs()

以下は、という名前のデータベース内のすべてのドキュメントを取得する例です。 my_database これは、を使用してローカルに保存されます db.allDocs()方法。このメソッドは、オブジェクトの形式でドキュメントの配列を取得し、呼び出す必要のある各ドキュメントのコンテンツを取得します。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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

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内のデータベースへのパスを渡す必要があります。

名前の付いたデータベースがあるとします my_databaseCouchDBサーバーで。次に、URLを使用してCouchDB内のデータベースのリストを確認するとhttp://127.0.0.1:5984/_utils/index.html 次のスクリーンショットが表示されます。

以下は、という名前のデータベースに存在するすべてのドキュメントを読み取る例です。 my_database これはCouchDBサーバーに保存されます。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Remote_Read_AllDocument.js

これは、という名前のデータベースに存在する特定のドキュメントのコンテンツを読み取ります my_database これはCouchDBに保存され、以下に示すようにコンソールに表示されます。

[ 
   { 
      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()方法。これを行うには、ドキュメントの配列を作成する必要があります。各ドキュメントには、_id, _rev 更新される値。

名前の付いたデータベースを想定します my_database PouchDBにローカルに保存されているドキュメントには、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

さて、あなたが実行すると bulk_fetch.js 追加することによるプログラム {include_docs: true} パラメータとして allDocs() 関数、コールバックの前に、次に示すように、更新されたドキュメントの値を確認できます。

[ 
   { 
      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のデータベースへのパスを渡す必要があります。

名前の付いたデータベースがあるとします my_databaseCouchDBサーバーで。次に、URLを使用してCouchDB内のデータベースのリストを確認するとhttp://127.0.0.1:5984/_utils/index.html 次のスクリーンショットが表示されます。

そして、という名前のデータベースを選択すると仮定します 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' 
      } 
   } 
]

以下は、という名前のデータベースに存在するすべてのドキュメントを更新する例です。 my_database これはCouchDBサーバーに保存されます。

//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

これにより、という名前のデータベースに存在するすべての指定されたドキュメントのコンテンツが更新されます。 my_database これはCouchDBに保存され、次のメッセージを表示します。

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()方法。これを行うには、削除するドキュメントの配列を作成する必要があります。各ドキュメントには、_id そして _rev。これらに加えて、別のキーと値のペアを追加する必要があります_deleted: true

名前の付いたデータベースを想定します my_database PouchDBにローカルに保存されているドキュメントには、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のデータベースへのパスを渡す必要があります。

名前の付いたデータベースがあるとします my_databaseCouchDBサーバーで。次に、URLを使用してCouchDB内のデータベースのリストを確認するとhttp://127.0.0.1:5984/_utils/index.html 次のスクリーンショットが表示されます。

名前の付いたデータベースを選択した場合 my_database、次のスクリーンショットに示すように、3つのドキュメントが含まれていることがわかります。

以下は、という名前のデータベースに存在するすべてのドキュメントを削除する例です。 my_database これはCouchDBサーバーに保存されます。

//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

これにより、という名前のデータベースに存在するすべての指定されたドキュメントのコンテンツが削除されます。 my_database これはCouchDBに保存され、次のメッセージを表示します。

Documents Deleted Successfully

を使用して、バイナリオブジェクトをドキュメントに添付できます。 putAttachment() PouchDBのメソッド。

構文

以下は、の構文です。 putAttachment()。このメソッドには、ドキュメントID、添付ファイルID、MIMEタイプを添付ファイルと一緒に渡す必要があります。このメソッドは、オプションのコールバック関数も受け入れます。

db.putAttachment( docId, attachmentId, attachment, type, [callback] );

BLOBまたはバッファオブジェクトを使用して添付ファイルを準備できます。 blob ブラウザでの作業中に使用され、 buffer での作業中に使用されます Node.js、Node.jsでプログラムをデモンストレーションしているので、バッファーオブジェクトを使用してドキュメントを準備します。

以下は、という名前のデータベース内に添付ファイル付きのドキュメントを作成する例です。 my_database PouchDBで putAttachment() 方法。

//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 tutorialspoint'], {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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Add_Attachment.js

これにより、名前の付いたデータベースに、添付ファイルを追加する空のドキュメントが作成されます。 my_database これはPouchDBに保存され、次のメッセージを表示します。

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' 
}

既存のドキュメントへの添付ファイルの追加

データベースに名前の付いたドキュメントがあるとします。 my_database ID 'のPouchDB002'。を実行することでその内容を取得できますread_doc.js id値をに変更することによって 002、以下に示すように。

{ 
   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 tutorialspoint'], {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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Add_Attachment_to_doc.js

これにより、指定したドキュメントに添付ファイルが追加され、次のメッセージが表示されます。

Attachment added successfully

でID値を変更した場合 read_doc.js002 それを実行すると、次の出力が得られます。

{ 
   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のデータベースへのパスを渡す必要があります。

名前の付いたデータベースがあるとします my_databaseCouchDBサーバーで。次に、URLを使用してCouchDB内のデータベースのリストを確認するとhttp://127.0.0.1:5984/_utils/index.html 次のスクリーンショットが表示されます。

そして、という名前のデータベースを選択した場合 my_database、以下のように内容を表示できます。

以下は、ドキュメントに添付ファイルを追加する例です。 001 名前の付いたデータベースに保存 my_database これはCouchDBサーバーに保存されます。

//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 tutorialspoint'], {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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Remote_Add_Attachment.js

これにより、指定したドキュメントに添付ファイルが追加され、次のメッセージが表示されます。

Attachment added successfully

これで、ドキュメントを確認すると、次のスクリーンショットに示すように、ドキュメントに追加された添付ファイルを確認できます。

を使用してPouchDBから添付ファイルを取得できます getAttachment()方法。このメソッドは常にblobまたはバッファオブジェクトを返します。

構文

以下は、の構文です。 getAttachment()。このメソッドには、ドキュメントIDと添付ファイルIDを渡す必要があります。このメソッドは、オプションのコールバック関数も受け入れます。

db.getAttachment( docId, attachmentId, [callback] );

以下は、PouchDBに保存されているドキュメントの添付ファイルを取得する例です。 getAttachment()方法。このコードを使用して、添付ファイルを取得しようとしていますatt_1.txt ドキュメントから 001

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Retrieve_Attachment.js

これにより、ドキュメントの添付ファイルが取得され、以下に示すようにコンソールに表示されます。

<Buffer 00>

リモートドキュメントからの添付ファイルの取得

サーバー(CouchDB)にリモートで保存されているデータベースに存在するドキュメントの添付ファイルを取得することもできます。

これを行うには、データベース名の代わりに、読み取るドキュメントが含まれているCouchDBのデータベースへのパスを渡す必要があります。

名前の付いたデータベースがあるとします my_databaseCouchDBサーバーで。次に、URLを使用してCouchDB内のデータベースのリストを確認するとhttp://127.0.0.1:5984/_utils/index.html 次のスクリーンショットが表示されます。

名前の付いたデータベースを選択した場合 my_database、以下のように内容を表示できます。

以下に示すように、このドキュメントに添付ファイルがあるとします。

以下は、ドキュメントの添付ファイルを取得する例です。 001 名前のデータベースに存在します my_database、CouchDBサーバーに保存されます。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Remote_Retrieve_Attachment.js

これにより、ドキュメントの添付ファイルが取得され、次のようにコンソールに表示されます。

<Buffer 00>

を使用してPouchDBから添付ファイルを削除できます removeAttachment() 方法。

構文

以下は、の構文です。 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' 
}

以下は、このドキュメントの添付ファイルを削除する例です。 001 PouchDBに保存され、 removeAttachment() 方法。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

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のデータベースへのパスを渡す必要があります。

名前の付いたデータベースがあるとします my_databaseCouchDBサーバーで。次に、URLを使用してCouchDB内のデータベースのリストを確認するとhttp://127.0.0.1:5984/_utils/index.html 次のスクリーンショットが表示されます。

そして、という名前のデータベースを選択した場合 my_database、以下のように内容を表示できます。

以下に示すように、このドキュメントに添付ファイルがあるとします。

上記のドキュメントの添付ファイルを削除する例を次に示します。 001 名前のデータベースに存在します my_database これはCouchDBサーバーに保存されます。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Remote_Delete_Attachment.js

これにより、既存の添付ファイルが削除され、次のメッセージが表示されます。

Attachment Deleted successfully

もう一度ドキュメントにアクセスすると、次のスクリーンショットに示すように、添付ファイルが削除されていることがわかります。

PouchDBの最も重要な機能の1つはレプリケーションです。つまり、データベースのコピーを作成できます。ローカルに保存されたPouchDBインスタンスまたはリモートに保存されたCouchDBインスタンスのいずれかを複製できます。

構文

以下は、PouchDBでデータベースを複製する構文です。ここに、source databaseターゲットです。このメソッドには、ソースデータベースと宛先データベースの場所を文字列形式で直接渡すか、それらを表すオブジェクトを渡すことができます。

PouchDB.replicate(source, target, [options])

ソースとターゲットはどちらも、PouchDBインスタンスまたはCouchDBインスタンスのいずれかです。

LocalDBをCouchDBに複製する

名前のデータベースがあるとします sample_database PouchDBにあり、以下に示す内容の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'}

以下は、という名前のデータベースのコピーを作成する例です。 sample_database これはCouchDBにローカルに保存されます。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Replication_example.js

これにより、CouchDBインスタンスにsample_databaseという名前のデータベースのコピーが作成され、以下に示すようにコンソールにメッセージが表示されます。

Database replicated successfully

次のリンクをクリックすると、データベースがCouchDBインスタンスに複製されているかどうかを確認できます。 http://127.0.0.1:5984/_utils/index.html

クリックすると、CouchDB内のデータベースのリストが表示されます。データベースのコピーを観察することもできますsample_database ここで作成されます。

レプリケートされたデータベースを選択すると、次のようにその内容を表示できます。

CouchDBをPouchDBに複製する

名前のデータベースがあるとします Remote_Database CouchDBにあり、以下に示すような内容の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'}

以下は、という名前のデータベースのコピーを作成する例です。 Remote_Database これは、ローカルストレージのCouchDBに保存されます。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Replication_example2.js

これにより、という名前のデータベースのコピーが作成されます remote_database PouchDBインスタンスで、以下に示すようにコンソールにメッセージを表示します。

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にローカルに保存されているデータベースを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に格納されているデータベースのオブジェクトです。

名前のデータベースがあるとします local_database PouchDBにあり、doc1、doc2、doc3の3つのドキュメントが含まれており、以下のような内容になっています。

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'}

そして、という名前のデータベースがあります Remote_Database CouchDBにあり、以下に示す内容の2つのドキュメントdoc1、doc2が含まれています。

doc1 = {_id: '001', name: 'Geeta', age: 25, Designation: 'Programmer'} 
doc2 = {_id: '002', name: 'Zara Ali', age: 24, Designation: 'Manager'}

以下は、これら2つのデータベースを同期する例です。一方はPouchDBに格納され、もう一方はCouchDBに格納されます。 replicate.to() そして replicate.from() メソッド。

//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。コマンドプロンプトを開き、を使用してJavaScriptファイルを実行しますnode 以下に示すように。

C:\PouchDB_Examples >node Synchronising_databases.js

これにより、2つのデータベースremoteDBとlocalDBが同期され、以下に示すようにコンソールにメッセージが表示されます。

Databases synchronized successfully.

2つのデータベースを同期した後、 http://127.0.0.1:5984/_utils/index.html を選択します remote_database。以下に示すように、ローカルデータベース(003、004、005)のドキュメントがこのデータベースにコピーされたことがわかります。

同様に、 local_database PouchDBに保存されている場合、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' 
      } 
   } 
]

上記のプログラムは、 sync() 2つのメソッドの代わりにPouchDBによって提供されるメソッド replicate.to() そして replicate.from() 以下に示すように。

//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からのバルクデータの圧縮や取得などの概念について説明します。

圧縮

を使用して未使用のデータを削除することにより、データベースのサイズを縮小できます。 compact()方法。この方法を使用して、ローカルデータベースとリモートデータベースを圧縮できます。

以下は、の使用法を示す例です。 compact() PouchDBのメソッド。

//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のセットを渡す必要があります。

以下は、の使用法を示す例です。 bulkGet() PouchDBのメソッド。

//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);
   }
});