PouchDB - Cập nhật hàng loạt

Bạn có thể cập nhật một loạt tài liệu trong PouchDB cùng một lúc bằng cách sử dụng bulkDocs()phương pháp. Để làm như vậy, bạn cần tạo một mảng tài liệu trong đó mỗi tài liệu chứa_id, _rev và các giá trị sẽ được cập nhật.

Giả sử cơ sở dữ liệu có tên my_database được lưu trữ cục bộ trong PouchDB chứa 3 tài liệu là doc1, doc2, doc3 với các nội dung sau.

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

Giả sử chúng ta phải tăng các giá trị tuổi trong cả 3 tài liệu lên 2 năm. Để điều này xảy ra, trước tiên bạn cần phải có_revcác giá trị. Do đó, hãy tìm nạp nội dung của các tài liệu này bằng đoạn mã sau.

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

Lưu mã trên dưới dạng bulk_fetch.js. Khi thực thi, chương trình trên cung cấp cho bạn các giá trị _id và _rev của các tài liệu trong cơ sở dữ liệu như hình dưới đây.

[ 
   { 
      id: '001',
      key: '001',
      value: { rev: '1-1604b0c3ff69dc1e261265fd60808404' } 
   },
   { 
      id: '002',
      key: '002',
      value: { rev: '1-b5e49db7e984841bf12a13e3ee548125' } 
   },
   { 
      id: '003',
      key: '003',
      value: { rev: '1-a7b342786ecc707aa91f3b321a177b51' } 
   } 
]

Bây giờ, bạn có thể cập nhật các tài liệu bằng cách sử dụng _id_rev giá trị như hình dưới đây.

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

Lưu đoạn mã trên vào một tệp có tên Update_All_Document.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằng cách sử dụng nút như hình dưới đây.

C:\PouchDB_Examples >node Update_All_Document.js

Điều này cập nhật tất cả các tài liệu tồn tại trong cơ sở dữ liệu có tên my_database được lưu trữ cục bộ, hiển thị thông báo sau.

Documents Updated Successfully

Bây giờ, nếu bạn thực hiện bulk_fetch.js chương trình bằng cách thêm {include_docs: true} như một tham số cho allDocs() , trước khi gọi lại, sau đó, bạn sẽ thấy các giá trị của các tài liệu được cập nhật, như được hiển thị bên dưới.

[ 
   { 
      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' 
      } 
   } 
]

Cập nhật hàng loạt từ cơ sở dữ liệu từ xa

Bạn có thể cập nhật tất cả các tài liệu từ cơ sở dữ liệu được lưu trữ từ xa trên máy chủ (CouchDB).

Để làm như vậy, thay vì tên cơ sở dữ liệu, bạn cần phải chuyển đường dẫn đến cơ sở dữ liệu trong CouchDB, chứa tài liệu sẽ được đọc.

Thí dụ

Giả sử có một cơ sở dữ liệu có tên my_databasetrong máy chủ CouchDB. Sau đó, nếu bạn xác minh danh sách cơ sở dữ liệu trong CouchDB bằng URLhttp://127.0.0.1:5984/_utils/index.html bạn sẽ nhận được ảnh chụp màn hình sau.

Và giả sử nếu chúng ta chọn cơ sở dữ liệu có tên my_database, bạn có thể quan sát thấy nó chứa 3 tài liệu như trong ảnh chụp màn hình sau.

Bây giờ, tìm nạp nội dung của các tài liệu này bằng đoạn mã sau.

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

Lưu mã trên dưới dạng remote_bulk_fetch.js. Khi thực hiện, chương trình trên cung cấp cho bạn nội dung của tất cả các tài liệu trong cơ sở dữ liệu như hình dưới đây.

[ 
   { 
      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' 
      } 
   } 
]

Sau đây là một ví dụ về cập nhật tất cả các tài liệu tồn tại trong cơ sở dữ liệu có tên my_database được lưu trữ trong máy chủ 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"); 
   } 
});

Lưu đoạn mã trên vào một tệp có tên Remote_Update_Document.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằng cách sử dụng nút như hình dưới đây.

C:\PouchDB_Examples >node Remote_Update_Document.js

Điều này cập nhật nội dung của tất cả tài liệu nhất định tồn tại trong cơ sở dữ liệu có tên my_database được lưu trữ trong CouchDB và hiển thị thông báo sau.

Documents Updated Successfully

Bây giờ, nếu bạn thực hiện remote_bulk_fetch.js bạn sẽ có thể thấy các giá trị của các tài liệu được cập nhật, như được hiển thị bên dưới.

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