Pouchdb-delete-batch

提供:Dev Guides
移動先:案内検索

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