PouchDB-バッチの更新

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