PouchDB - Hướng dẫn nhanh

Chương này giới thiệu ngắn gọn về PouchDB cùng với các tính năng và cách thức hoạt động của nó.

PouchDB là gì?

PouchDB là một mã nguồn mở in-browser database APIđược viết bằng JavaScript. Nó được mô phỏng theo Couch DB & minuss; cơ sở dữ liệu NoSQL. Sử dụng API này, chúng tôi có thể xây dựng các ứng dụng hoạt động ngoại tuyến và trực tuyến. Nó sử dụng nội bộ WebSQL và IndexedDB để lưu trữ dữ liệu.

Làm thế nào nó hoạt động?

Trong PouchDB, khi ứng dụng ngoại tuyến, dữ liệu được lưu trữ cục bộ bằng cách sử dụng WebSQL và IndexedDB trong trình duyệt. Khi ứng dụng trực tuyến trở lại, nó sẽ được đồng bộ hóa với CouchDB và các máy chủ tương thích.

Sử dụng PouchDB, bạn có thể giao tiếp liền mạch với cả cơ sở dữ liệu cục bộ và từ xa mà không nhận thấy bất kỳ sự khác biệt nào.

Đặc điểm của PouchDB

Sau đây là các tính năng của PouchDB -

  • Cross Browser - API do PouchDB cung cấp hoạt động giống nhau trong mọi môi trường, do đó, chúng tôi có thể chạy ứng dụng PouchDB trong nhiều trình duyệt khác nhau.

  • Light Weight - PouchDB là một API rất nhẹ, nó cũng được đưa vào dễ dàng chỉ cần sử dụng một thẻ script.

  • Easy to Learn - Nếu bạn đã biết trước về bất kỳ ngôn ngữ lập trình nào thì việc học PouchDB rất dễ dàng.

  • Open Source - PouchDB là một Ứng dụng mã nguồn mở và có sẵn trên GitHub.

Ưu điểm của PouchDB

Sau đây là những ưu điểm của PouchDB -

  • Vì PouchDB nằm bên trong trình duyệt, nên không cần thực hiện các truy vấn qua mạng, điều này dẫn đến việc thực thi các truy vấn nhanh hơn.

  • Bạn có thể đồng bộ hóa dữ liệu với bất kỳ máy chủ nào được hỗ trợ và bằng cách đó, bạn có thể chạy ứng dụng cả trực tuyến và ngoại tuyến.

Các trình duyệt hỗ trợ PouchDB

Sau đây là các trình duyệt hỗ trợ PouchDB:

  • Firefox 29+ (Bao gồm Firefox OS và Firefox dành cho Android)
  • Chrome 30+
  • Safari 5+
  • Internet Explorer 10+
  • Opera 21+
  • Android 4.0+
  • iOS 7.1+
  • Windows Phone 8+

Chương này giải thích cách tải xuống và cài đặt PouchDB trong hệ thống của bạn.

Cài đặt PouchDB

Để làm việc với PouchDB, bạn cần tải xuống tệp .jsvà đưa nó vào tập lệnh của bạn. Sau đây là các bước để cài đặt PouchDB.

Bước 1

Truy cập trang chủ của trang web PouchDB, bằng cách nhấp vào liên kết sau -

https://PouchDB.com/

Bước 2

Nhấp vào nút Tải xuống ở phía trên bên phải của trang web như được hiển thị trong ảnh chụp màn hình ở trên. Cái này sẽ tải xuốngPouchDB-5.3.0.min.js trong hệ thống của bạn.

Bước 3

Sao chép và dán PouchDB-5.3.0.min.js vào thư mục làm việc của bạn và đưa nó vào JavaScript của bạn như được hiển thị trong lệnh sau.

<script src = "PouchDB-5.3.0.min.js"></script>

Cài đặt Túi bằng Node.js

Bạn cũng có thể cài đặt PouchDB dưới dạng mô-đun Node.js. Sau đây là các bước để cài đặt PouchDB bằng Node.js.

Bước 1

Cài đặt Node.js bằng cách làm theo các bước được đưa ra trong phần Cài đặt Node.js của hướng dẫn tập lệnh cà phê của chúng tôi .

Bước 2

Mở dấu nhắc lệnh và thực hiện lệnh sau. Thao tác này sẽ cài đặt mô-đun nút PouchDB trong hệ thống của bạn.

npm install --save PouchDB

Tải xuống CouchDB

Khi ngoại tuyến, PouchDB lưu trữ dữ liệu cục bộ và hoạt động giống như một ứng dụng. Bạn có thể truy cập trực tuyến bằng cách kết nối với các máy chủ tương thích. Như chúng ta biết PouchDB có thể được kết nối với CouchDB, vì vậy, hãy cài đặt CouchDB. Sau đây là các bước để cài đặt CouchDB.

Bước 1

Trang web chính thức của CouchDB là http://couchdb.apache.org. Nếu bạn nhấp vào liên kết nhất định, bạn có thể nhận được trang chủ của trang web chính thức của CouchDB như được hiển thị trong ảnh chụp màn hình sau.

Bước 2

Nếu bạn nhấp vào nút tải xuống sẽ dẫn đến một trang cung cấp các liên kết tải xuống CouchDB ở nhiều định dạng khác nhau. Ảnh chụp nhanh sau đây minh họa tương tự.

Bước 3

Chọn liên kết tải xuống cho Hệ thống Windows và chọn một trong các bản sao được cung cấp để bắt đầu tải xuống của bạn.

Cài đặt CouchDB

Một cửa sổ thực thi setup-couchdb-1.6.1_R16B02.exetệp sẽ được tải xuống trên hệ thống của bạn. Chạy tệp thiết lập và tiến hành cài đặt.

Sau khi cài đặt CouchDB trong hệ thống của bạn thành công, hãy mở thư mục nơi CouchDB đã được cài đặt, chuyển đến thư mục bin và khởi động máy chủ bằng cách chạy tệp script có tên couchdb.bat.

Sau khi cài đặt, hãy mở giao diện web tích hợp sẵn của CouchDB bằng cách truy cập liên kết sau: http://127.0.0.1:5984/. Nếu mọi thứ suôn sẻ, điều này sẽ cung cấp cho bạn một trang web, sẽ có kết quả sau.

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

Bạn có thể tương tác với giao diện web CouchDB bằng cách sử dụng URL sau:

http://127.0.0.1:5984/_utils/

Điều này cho bạn thấy trang chỉ mục của Futon, là giao diện web của CouchDB.

Bạn có thể tạo cơ sở dữ liệu trong PouchDB bằng cách sử dụng hàm tạo PouchDB.

Cú pháp

Sau đây là cú pháp của việc sử dụng hàm tạo PouchDB. Để làm được điều này, bạn cần chuyển tên của cơ sở dữ liệu làm tham số.

new PouchDB(Database_name)

Thí dụ

Để tạo cơ sở dữ liệu trong PouchDB bằng node, trước hết, bạn cần yêu cầu gói PouchDB bằng cách sử dụng require() và sau đó bạn có thể tạo cơ sở dữ liệu như trong ví dụ sau.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');
console.log ("Database created Successfully.");

Lưu đoạn mã trên vào một tệp có tên Create_Database.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples>node Create_Database.js

Thao tác này sẽ tạo cục bộ cơ sở dữ liệu (bạn có thể thấy thư mục trong thư mục hiện tại) hiển thị thông báo sau.

Database created Successfully.

Bạn có thể lấy thông tin cơ bản về cơ sở dữ liệu bằng phương thức có tên info()

Cú pháp

Sau đây là cú pháp sử dụng info()phương pháp PouchDB. Phương thức này chấp nhận một hàm gọi lại.

db.info([callback])

Thí dụ

Sau đây là một ví dụ về truy xuất thông tin cơ sở dữ liệu bằng cách sử dụng info()phương pháp. Ở đây, chúng tôi đang hiển thị thông tin của cơ sở dữ liệu có tênmy_database. Trong trường hợp lỗi, lỗi sẽ được hiển thị trên bàn điều khiển.

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

Lưu đoạn mã trên vào một tệp có tên Database_info.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples>node Database_info.js

Thao tác này sẽ hiển thị thông tin của cơ sở dữ liệu được chỉ định như sau.

{ 
   doc_count: 0,
   update_seq: 0,
   backend_adapter: 'LevelDOWN',
   db_name: 'my_database',
   auto_compaction: false,
   adapter: 'leveldb' 
}

Thông tin cơ sở dữ liệu từ xa

Theo cách tương tự, bạn nhận được thông tin của cơ sở dữ liệu được lưu 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 chuyển đường dẫn đến cơ sở dữ liệu cần thiết trong CouchDB.

Thí dụ

Sau đây là một ví dụ về truy xuất thông tin của cơ sở dữ liệu được lưu trong máy chủ CouchDB. Mã này cung cấp cho bạn thông tin của cơ sở dữ liệu có tênmy_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);
   }
});

Lưu đoạn mã trên vào một tệp có tên Database_ Remote_info.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples>node Database_Remote_info.js

Thao tác này sẽ hiển thị thông tin của cơ sở dữ liệu được chỉ định như sau.

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

Bạn có thể xóa cơ sở dữ liệu trong PouchDB bằng cách sử dụng db.destroy() phương pháp.

Cú pháp

Sau đây là cú pháp sử dụng db.destroy()phương pháp. Phương thức này chấp nhận một hàm gọi lại như một tham số.

db.destroy()

Thí dụ

Sau đây là một ví dụ về việc xóa cơ sở dữ liệu trong PouchDB bằng cách sử dụng destroy()phương pháp. Ở đây, chúng tôi đang xóa cơ sở dữ liệu có tênmy_database, đã tạo trong các chương trước.

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

Lưu đoạn mã trên vào một tệp có tên Delete_Database.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằng node như hình bên dưới.

C:\PouchDB_Examples >node Delete_Database.js

Thao tác này sẽ xóa 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.

Database Deleted

Xóa cơ sở dữ liệu từ xa

Theo cách tương tự, bạn có thể xóa 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 chuyển đường dẫn đến cơ sở dữ liệu được yêu cầu xóa, trong CouchDB.

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.

Sau đây là một ví dụ về việc xóa một cơ sở dữ liệu có tên my_database được lưu 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');

//deleting database
db.destroy(function (err, response) {
   if (err) {
      return console.log(err);
   } else {
      console.log("Database Deleted");
   }
});

Lưu đoạn mã trên vào một tệp có tên Remote_Database_Delete.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >Remote_Database_Delete.js

Thao tác này sẽ xóa cơ sở dữ liệu được chỉ định khỏi PouchDB hiển thị thông báo sau.

Database Deleted

xác minh

Sau khi thực hiện chương trình trên, nếu bạn truy cập lại URL, bạn sẽ nhận được ảnh chụp màn hình sau. Ở đây, bạn chỉ có thể quan sát hai cơ sở dữ liệu vìmy_database đã bị xóa.

Bạn có thể tạo một tài liệu trong PouchDB bằng cách sử dụng db.put() phương pháp.

Cú pháp

Sau đây là cú pháp sử dụng phương thức db.put () của PouchDB. Bạn có thể lưu trữ tài liệu sẽ được tạo trong PouchDB, trong một biến và chuyển dưới dạng tham số cho phương thức này. Ngoài ra, phương thức này cũng chấp nhận một hàm gọi lại (tùy chọn) làm tham số.

db.put(document, callback)

Thí dụ

Sau đây là một ví dụ về việc tạo tài liệu trong PouchDB bằng cách sử dụng put()phương pháp. Tài liệu chúng tôi tạo phải có định dạng JSON, một tập hợp các cặp khóa-giá trị được phân tách bằng dấu phẩy (,) và được đặt trong dấu ngoặc nhọn ({}).

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

Lưu đoạn mã trên vào một tệp có tên Create_Document.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Create_Document.js

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

Document created Successfully

Chèn tài liệu vào cơ sở dữ liệu từ xa

Bạn cũng có thể chèn một tài liệu vào 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 chuyển đường dẫn đến cơ sở dữ liệu mà bạn muốn tạo tài liệu trong CouchDB.

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.

Bây giờ, nếu bạn nhấp vào cơ sở dữ liệu có tên my_database, bạn sẽ tìm thấy một cơ sở dữ liệu trống như được hiển thị trong ảnh chụp màn hình sau.

Sau đây là một ví dụ về việc chèn tài liệu vào cơ sở dữ liệu có tên my_database được lưu 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
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");
   }
});

Lưu đoạn mã trên vào một tệp có tên Remote_Create_Document.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Remote_Create_Document.js

Điều này tạo ra tài liệu đã cho trong cơ sở dữ liệu PouchDB có tên my_database được lưu trữ trong CouchDB, hiển thị thông báo sau.

Document created Successfully

xác minh

Sau khi thực hiện chương trình trên, nếu bạn truy cập vào my_database một lần nữa, bạn có thể quan sát tài liệu được tạo như trong ảnh chụp màn hình sau.

Bạn có thể đọc / truy xuất nội dung của tài liệu trong PouchDB bằng cách sử dụng db.get() phương pháp.

Cú pháp

Sau đây là cú pháp sử dụng db.get()phương pháp PouchDB. Phương thức này chấp nhậndocument id và một chức năng gọi lại tùy chọn.

db.get(document, callback)

Thí dụ

Sau đây là một ví dụ về cách đọc nội dung của một tài liệu trong PouchDB bằng cách sử dụng get() phương pháp.

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

Lưu đoạn mã trên vào một tệp có tên Read_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 Read_Document.js

Thao tác này đọc nội dung của tài liệu đã cho tồn tại trong cơ sở dữ liệu có tên my_databaseđược lưu trữ cục bộ. Thông báo sau sẽ được hiển thị trên bảng điều khiển.

{
   name: 'Raju',
   age: 23,
   designation: 'Designer',
   _id: '001',
   _rev: '1-ba7f6914ac80098e6f63d2bfb0391637'
}

Đọc tài liệu từ cơ sở dữ liệu từ xa

Bạn cũng có thể đọ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.

Bằng cách nhấp vào cơ sở dữ liệu có tên my_databasebạn có thể xem ảnh chụp màn hình sau. Ở đây, bạn có thể thấy rằng cơ sở dữ liệu này chứa một tài liệu có id001.

Sau đây là một ví dụ về việc đọc nội dung của tài liệu có id là “001”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');

//Reading the contents of a document
db.get('001', function(err, doc) {
   if (err) {
      return console.log(err);
   } else {
      console.log(doc);
   }
});

Lưu đoạn mã trên vào một tệp có tên Remote_Read_Document.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Remote_Read_Document.js

Thao tác này đọc nội dung của tài liệu đã cho tồn tại trong cơ sở dữ liệu có tên my_databaseđược lưu trữ trong CouchDB. Thông báo sau được hiển thị trên bảng điều khiển.

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

Bất cứ khi nào, chúng tôi tạo một tài liệu trong PouchDB, một trường mới _rev được tạo ra và nó được gọi là revision marker. Các_revGiá trị của là một số ngẫu nhiên duy nhất, mỗi khi chúng tôi thực hiện thay đổi đối với tài liệu, giá trị của _rev bị thay đổi.

Bạn có thể cập nhật tài liệu hiện có trong PouchDB bằng cách sử dụng (_rev). Để làm như vậy, trước hết truy xuất_revgiá trị của tài liệu mà chúng tôi muốn cập nhật. Bây giờ, đặt nội dung sẽ được cập nhật cùng với_rev giá trị trong tài liệu mới, và cuối cùng chèn tài liệu này vào PouchDB bằng cách sử dụng put() phương pháp.

Thí dụ

Giả sử chúng ta có một tài liệu trong PouchDB với id 001trong đó có chi tiết của một người. Để cập nhật tài liệu này, chúng ta nên có số hiệu của nó. Do đó, để truy xuất nội dung của tài liệu, mã sau được sử dụng.

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

Khi thực hiện đoạn mã trên, bạn sẽ nhận được kết quả sau.

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

Bây giờ, sử dụng _rev bạn có thể cập nhật giá trị của khóa “age”Thành 26, như được hiển thị trong đoạn mã sau.

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

Lưu đoạn mã trên vào một tệp có tên Update_Document.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\Pouch_Examples>node Update_Document.js

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

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

Cập nhật tài liệu trong cơ sở dữ liệu từ xa

Bạn cũng có thể cập nhật tài liệu hiện có trong 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ập nhật.

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.

Bằng cách nhấp vào cơ sở dữ liệu có tên my_database, bạn có thể xem ảnh chụp màn hình sau. Ở đây, bạn có thể thấy rằng cơ sở dữ liệu này chứa một tài liệu có id001.

Sau đây là ví dụ về việc cập nhật tuổi của tài liệu có id là “001”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 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);
   }
});

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ằngnode như hình bên dưới.

C:\PouchDB_Examples >node Remote_Update_Document.js

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

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

Bạn có thể xóa tài liệu khỏi cơ sở dữ liệu tồn tại trong PouchDB bằng cách sử dụng db.remove() phương pháp.

Cú pháp

Sau đây là cú pháp sử dụng db.remove()phương pháp PouchDB. Đối với phương pháp này, chúng ta phải vượt quaid_revđể xóa một tài liệu hiện có như được hiển thị trong đoạn mã sau. Phương thức này chấp nhận một hàm gọi lại tùy chọn. Chúng tôi cũng có thể chuyển toàn bộ tài liệu thay vì id và _rev.

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

Thí dụ

Giả sử chúng ta có một tài liệu trong PouchDB với id 001trong đó có các chi tiết của một người. Để xóa tài liệu này cùng vớiid chúng ta cũng nên có nó _revcon số. Do đó, hãy truy xuất nội dung của tài liệu như được hiển thị trong đoạn mã sau.

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

Việc thực thi đoạn mã trên cho kết quả như sau.

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

Bây giờ, sử dụng _rev và id của tài liệu, bạn có thể xóa nó bằng cách sử dụng remove() như được hiển thị trong đoạn mã sau.

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

Lưu đoạn mã trên vào một tệp có tên Delete_Document.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Delete_Document.js

Thao tác này sẽ xóa nội dung của tài liệu đã cho tồn tại trong cơ sở dữ liệu có tên my_databaseđược lưu trữ cục bộ. Thông báo sau được hiển thị.

Document deleted successfully

Xóa tài liệu khỏi cơ sở dữ liệu từ xa

Bạn cũng có thể xóa tài liệu hiện có khỏi 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.

Bằng cách nhấp vào cơ sở dữ liệu có tên my_databasebạn có thể xem ảnh chụp màn hình sau. Tại đây, bạn có thể thấy rằng cơ sở dữ liệu chứa một tài liệu có id001.

Sau đây là một ví dụ về việc xóa nội dung của tài liệu có id “001”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');

//Deleting an existing document
db.remove('001', '3-552920d1ca372986fad7b996ce365f5d', function(err) {
   if (err) {
      return console.log(err);
   } else {
      console.log("Document deleted successfully");
   }
});

Lưu đoạn mã trên vào một tệp có tên Remote_Delete_Document.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Remote_Delete_Document.js

Thao tác này sẽ xóa tài liệu đã cho tồn tại trong cơ sở dữ liệu có tên my_databaseđược lưu trữ trong CouchDB. Thông báo sau được hiển thị.

Document deleted successfully

Bạn có thể tạo một mảng (hàng loạt) tài liệu trong PouchDB bằng cách sử dụng db.bulkDocs()phương pháp. Trong khi tạo tài liệu, sử dụng phương pháp này nếu chúng tôi không cung cấp giá trị _id, thì PouchDB thay mặt chúng tôi tạo id duy nhất cho tất cả các tài liệu hàng loạt.

Cú pháp

Sau đây là cú pháp sử dụng db.bulkDocs()phương pháp PouchDB. Bạn có thể lưu trữ tất cả các tài liệu sẽ được tạo trong PouchDB trong một mảng và chuyển nó vào phương thức này dưới dạng một tham số. Ngoài ra, phương thức này cũng chấp nhận một hàm gọi lại (tùy chọn) làm tham số.

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

Thí dụ

Sau đây là một ví dụ về việc tạo nhiều tài liệu trong PouchDB bằng cách sử dụng db.bulkDocs ()phương pháp. Các tài liệu chúng tôi tạo phải có định dạng JSON, một tập hợp các cặp khóa-giá trị được phân tách bằng dấu phẩy (,) và được đặt trong dấu ngoặc nhọn ({}).

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

Lưu đoạn mã trên vào một tệp có tên Create_Batch.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Create_Batch.js

Điều này tạo ra tài liệu đã cho trong cơ sở dữ liệu PouchDB có tên my_databaseđược lưu trữ cục bộ. Thông báo sau sẽ được hiển thị.

Documents created Successfully

Chèn một lô vào cơ sở dữ liệu từ xa

Bạn có thể chèn một mảng tài liệu trong 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 chuyển đường dẫn đến cơ sở dữ liệu mà chúng ta muốn tạo tài liệu trong CouchDB.

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.

Dưới đây là một ví dụ về chèn một mảng tài liệu trong cơ sở dữ liệu có tên my_database được lưu 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 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");
   }
});

Lưu đoạn mã trên vào một tệp có tên Remote_Create_Batch.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Remote_Create_Batch.js

Điều này tạo ra các tài liệu đã cho trong cơ sở dữ liệu PouchDB có tên my_databaseđược lưu trữ trong CouchDB. Thông báo sau được hiển thị.

Document created Successfully

xác minh

Sau khi thực hiện chương trình trên nếu bạn truy cập vào my_database một lần nữa, bạn có thể quan sát các tài liệu được tạo như trong ảnh chụp màn hình sau.

Bạn có thể đọc / truy xuất nhiều / hàng loạt tài liệu từ cơ sở dữ liệu trong PouchDB bằng cách sử dụng allDocs() phương pháp.

Cú pháp

Sau đây là cú pháp sử dụng db.allDocs()phương pháp PouchDB. Phương thức này chấp nhận một hàm gọi lại tùy chọn.

db.allDocs()

Thí dụ

Sau đây là một ví dụ về truy xuất tất cả các tài liệu trong cơ sở dữ liệu có tên my_database được lưu trữ cục bộ, sử dụng db.allDocs()phương pháp. Phương thức này truy xuất mảng tài liệu dưới dạng đối tượng, để lấy nội dung của mỗi tài liệu bạn cần gọi là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);
   }
});

Lưu đoạn mã trên vào một tệp có tên Read_All_Document.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Read_All_Document.js

Điều này đọc 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ộ. Thông báo sau được hiển thị trên bảng điều khiển.

[ 
   { 
      id: '001',
      key: '001',
      value: { rev: '1-9dc57f5faa7ea90eeec22eba8bfd05f5' } 
   },
   { 
      id: '002',
      key: '002',
      value: { rev: '1-9bf80afcedb9f8b5b35567292affb254' } 
    },
   { 
      id: '003',
      key: '003',
      value: { rev: '1-1204f108e41bf8baf867856d5da16c57' } 
   }
]

Nói chung, như trong kết quả trên, sử dụng allDocs() phương pháp bạn chỉ có thể thấy _id, key_revcác trường của mỗi tài liệu. Tuy nhiên, để đưa toàn bộ tài liệu vào kết quả, bạn phải tạo tham số tùy chọninclude_docs đúng như hình bên dưới.

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

Việc thực thi đoạn mã trên cung cấp cho bạn một danh sách các tài liệu đầy đủ trong các tài liệu được chỉ định như được hiển thị trong đoạn mã sau.

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

Đọc một loạt từ cơ sở dữ liệu từ xa

Bạn cũng có thể tìm nạp 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.

Sau đây là một ví dụ về việc đọc 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');

//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 đoạn mã trên vào một tệp có tên Remote_Read_AllDocument.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Remote_Read_AllDocument.js

Thao tác này đọc nội dung của tài liệu đã cho 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ị trên bảng điều khiển 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' 
      } 
   } 
]

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

Bạn có thể xóa 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 sẽ bị xóa ở đâu, mỗi tài liệu phải chứa_id_rev. Ngoài những thứ này, bạn phải thêm một cặp khóa-giá trị khác_deleted: true.

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

Và nói rằng, chúng tôi phải xóa tất cả ba tài liệu. Sau đó, trước hết bạn cần lấy_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. Thực hiện chương trình trên sẽ 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ể xóa 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_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");
   }
});

Lưu đoạn mã trên vào một tệp có tên Delete_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 Delete_All_Document.js

Thao tác này sẽ xóa 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 Deleted Successfully

Bây giờ, nếu bạn thực hiện bulk_fetch.js chương trình, bạn có thể quan sát một dấu ngoặc nhọn trên bảng điều khiển cho biết rằng cơ sở dữ liệu đang trống, như hình dưới đây.

[]

Xóa hàng loạt khỏi 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.

Nếu chúng tôi 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.

Sau đây là một ví dụ về việc xóa 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: '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");
   }
});

Lưu đoạn mã trên vào một tệp có tên Remote_delete_AllDocuments.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_Delete_AllDocuments.js

Thao tác này sẽ xóa 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 Deleted Successfully

Bạn có thể đính kèm một đối tượng nhị phân vào tài liệu bằng cách sử dụng putAttachment() phương thức trong PouchDB.

Cú pháp

Sau đây là cú pháp của putAttachment(). Đối với phương pháp này, chúng ta phải chuyển id tài liệu, id tệp đính kèm, kiểu MIME cùng với tệp đính kèm. Phương thức này cũng chấp nhận một hàm gọi lại tùy chọn.

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

Chúng tôi có thể chuẩn bị tệp đính kèm bằng cách sử dụng các đối tượng blob hoặc bộ đệm, trong đó blob được sử dụng khi làm việc với trình duyệt và buffer được sử dụng khi làm việc với Node.js, vì chúng tôi đang trình diễn các chương trình của mình trong Node.js, chúng tôi sử dụng các đối tượng đệm để chuẩn bị tài liệu.

Thí dụ

Sau đây là một ví dụ về cách tạo tài liệu có tệp đính kèm, trong cơ sở dữ liệu có tên my_database trong PouchDB bằng cách sử dụng putAttachment() phương pháp.

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

Lưu đoạn mã trên vào một tệp có tên Add_Attachment.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Add_Attachment.js

Điều này tạo ra một tài liệu trống thêm một phần đính kèm vào nó, trong cơ sở dữ liệu có tên my_database được lưu trữ trong PouchDB và hiển thị thông báo sau.

Attachment added successfully

Bạn có thể xác minh xem phần đính kèm đã được thêm hay chưa bằng cách đọc tài liệu bằng đoạn mã sau.

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

Lưu mã trên dưới dạng read_doc.jsvà thực hiện nó. Khi thực hiện chương trình này, bạn có thể xem nội dung sau của tài liệu.

{ 
   _attachments: { 
      att_1.txt: { 
         content_type: 'text/plain',
         digest: 'md5-k7iFrf4NoInN9jSQT9WfcQ==',
         data: 'AA==' 
      } 
   },
   _id: '001',
   _rev: '1-620fd5f41d3328fcbf9ce7504338a51d' 
}

Thêm phần đính kèm vào tài liệu hiện có

Giả sử, có một tài liệu trong cơ sở dữ liệu có tên my_database PouchDB với id '002'. Bạn có thể lấy nội dung của nó bằng cách thực thiread_doc.js bằng cách thay đổi giá trị id thành 002, như hình dưới đây.

{ 
   name: 'Raju',
   age: 23,
   designation: 'Designer',
   _id: '002',
   _rev: '1-05ca7b5f3f4762a9fb2d119cd34c8d40' 
}

Bây giờ, bạn có thể thêm tệp đính kèm vào tài liệu này bằng cách sử dụng _rev giá trị.

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

Lưu đoạn mã trên vào một tệp có tên Add_Attachment_to_doc.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Add_Attachment_to_doc.js

Thao tác này thêm phần đính kèm vào tài liệu được chỉ định hiển thị thông báo sau.

Attachment added successfully

Nếu bạn thay đổi giá trị id trong read_doc.js đến 002 và thực thi nó, bạn sẽ nhận được kết quả sau.

{ 
   name: 'Raju',
   age: 23,
   designation: 'Designer',
   _attachments: { 
      att_1: { 
         content_type: 'text/plain',
         digest: 'md5-k7iFrf4NoInN9jSQT9WfcQ==',
         data: 'AA==' 
      } 
   },
   _id: '002',
   _rev: '2-3bb4891b954699bce28346723cc7a709' 
}

Thêm phần đính kèm vào tài liệu từ xa

Bạn thậm chí có thể thêm phần đính kèm vào tài liệu hiện có trong 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à nếu bạn chọn cơ sở dữ liệu có tên my_database, bạn có thể xem nội dung của nó như hình dưới đây.

Sau đây là ví dụ về cách thêm tệp đính kèm vào tài liệu 001 được lưu trữ 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');

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

Lưu đoạn mã trên vào một tệp có tên Remote_Add_Attachment.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Remote_Add_Attachment.js

Thao tác này thêm phần đính kèm vào tài liệu được chỉ định hiển thị thông báo sau.

Attachment added successfully

Bây giờ, nếu bạn xác minh tài liệu, bạn có thể quan sát tệp đính kèm được thêm vào nó như được hiển thị trong ảnh chụp màn hình sau.

Bạn có thể truy xuất tệp đính kèm từ PouchDB bằng cách sử dụng getAttachment()phương pháp. Phương thức này luôn trả về các đối tượng blob hoặc bộ đệm.

Cú pháp

Sau đây là cú pháp của getAttachment(). Đối với phương pháp này, chúng ta phải chuyển id tài liệu và id tệp đính kèm. Phương thức này cũng chấp nhận một hàm gọi lại tùy chọn.

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

Thí dụ

Sau đây là một ví dụ về việc truy xuất tệp đính kèm của tài liệu được lưu trữ trong PouchDB, sử dụng getAttachment()phương pháp. Sử dụng mã này, chúng tôi đang cố gắng truy xuất tệp đính kèmatt_1.txt từ tài liệu 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);
   }
});

Lưu đoạn mã trên vào một tệp có tên Retrieve_Attachment.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Retrieve_Attachment.js

Thao tác này lấy tệp đính kèm của tài liệu và hiển thị trên bảng điều khiển như hình dưới đây.

<Buffer 00>

Lấy tệp đính kèm từ tài liệu từ xa

Bạn cũng có thể truy xuất phần đính kèm của tài liệu hiện có trong 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.

Nếu bạn chọn cơ sở dữ liệu có tên my_database, bạn có thể xem nội dung của nó như hình dưới đây.

Giả sử, có một tệp đính kèm trong tài liệu này như hình dưới đây.

Sau đây là một ví dụ về truy xuất tệp đính kèm của tài liệu 001 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');

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

Lưu đoạn mã trên vào một tệp có tên Remote_Retrieve_Attachment.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Remote_Retrieve_Attachment.js

Thao tác này lấy tệp đính kèm tài liệu và hiển thị trên bảng điều khiển như hình dưới đây.

<Buffer 00>

Bạn có thể xóa phần đính kèm khỏi PouchDB bằng cách sử dụng removeAttachment() phương pháp.

Cú pháp

Sau đây là cú pháp của removeAttachment()phương pháp. Đối với phương pháp này, chúng ta phải chuyển id tài liệu, id tệp đính kèm và giá trị _rev. Phương thức này cũng chấp nhận một hàm gọi lại tùy chọn.

db.removeAttachment ( docId, attachmentId, rev, [callback] );

Thí dụ

Giả sử có một tài liệu trong PouchDB với id 001, trong đó có id, tên, tuổi, chỉ định của nhân viên cùng với tệp đính kèm như hình dưới đây.

{ 
   name: 'Raju',
   age: 23,
   designation: 'Designer',
   _attachments: { 
      'att_1.txt': { 
         content_type: 'text/plain',
         digest: 'md5-k7iFrf4NoInN9jSQT9WfcQ==',
         data: 'AA==' 
      } 
   },
   _id: '001',
   _rev: '2-cdec6c9f45ddbee7d456945654742d43' 
}

Sau đây là một ví dụ về việc xóa phần đính kèm của tài liệu này 001 được lưu trữ trong PouchDB, sử dụng removeAttachment() phương pháp.

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

Lưu đoạn mã trên vào một tệp có tên Remove_Attachment.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Remove_Attachment.js

Thao tác này sẽ xóa phần đính kèm của tài liệu và hiển thị thông báo trên bảng điều khiển như hình dưới đây.

Attachment deleted successfully

Sau khi xóa, bạn có thể xác minh nội dung của tài liệu bằng cách thực hiện mã sau.

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

Lưu mã này thành read.jsvà thực hiện nó. Khi thực thi, bạn sẽ nhận được nội dung của tài liệu sau khi xóa tệp đính kèm, như hình dưới đây.

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

Xóa phần đính kèm khỏi tài liệu từ xa

Bạn có thể xóa phần đính kèm của tài liệu hiện có trong 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à nếu bạn chọn cơ sở dữ liệu có tên my_database, bạn có thể xem nội dung của nó như hình dưới đây.

Giả sử có một tệp đính kèm trong tài liệu này như hình dưới đây.

Sau đây là ví dụ về cách xóa tài liệu đính kèm được đề cập ở trên 001 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');

db.removeAttachment('001', 'att_1.txt', '2-049f1c4ffa54576ec0947b65e34de423', 
   function(err, res) { 
   if (err) { 
      return console.log(err); 
   } else { 
      console.log(res+"Attachment Deleted successfully") 
   } 
});

Lưu đoạn mã trên vào một tệp có tên Remote_Delete_Attachment.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Remote_Delete_Attachment.js

Thao tác này sẽ xóa tệp đính kèm hiện có và hiển thị thông báo sau.

Attachment Deleted successfully

Nếu bạn truy cập lại tài liệu, bạn có thể nhận thấy rằng tệp đính kèm đã bị xóa như được hiển thị trong ảnh chụp màn hình sau.

Một trong những tính năng quan trọng nhất của PouchDB là sao chép, tức là bạn có thể tạo một bản sao của cơ sở dữ liệu. Bạn có thể sao chép một phiên bản PouchDB được lưu trữ cục bộ hoặc một phiên bản CouchDB được lưu trữ từ xa.

Cú pháp

Sau đây là cú pháp sao chép cơ sở dữ liệu trong PouchDB. Đây, một bản sao củasource databaselà mục tiêu. Với phương pháp này, bạn có thể chuyển trực tiếp vị trí của cơ sở dữ liệu nguồn và cơ sở dữ liệu đích ở định dạng Chuỗi hoặc bạn có thể chuyển các đối tượng đại diện cho chúng.

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

Cả nguồn và đích đều có thể là bản sao PouchDB hoặc bản sao CouchDB.

Sao chép LocalDB sang CouchDB

Giả sử có một cơ sở dữ liệu với tên sample_database trong PouchDB, và nó chứa 3 tài liệu doc1, doc2 và doc3, có nội dung như hình bên dưới.

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

Sau đây là một ví dụ tạo một bản sao của cơ sở dữ liệu có tên sample_database được lưu trữ cục bộ trong 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");

Lưu đoạn mã trên vào một tệp có tên Replication_example.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Replication_example.js

Thao tác này tạo một bản sao của cơ sở dữ liệu có tên sample_database trong phiên bản CouchDB và hiển thị thông báo trên bảng điều khiển như hình dưới đây.

Database replicated successfully

Bạn có thể xác minh xem cơ sở dữ liệu có được sao chép trong phiên bản CouchDB của mình hay không bằng cách nhấp vào liên kết sau http://127.0.0.1:5984/_utils/index.html.

Khi nhấp vào, bạn có thể xem danh sách cơ sở dữ liệu trong CouchDB của mình. Bạn cũng có thể quan sát thấy rằng một bản sao của cơ sở dữ liệusample_database được tạo ở đây.

Nếu bạn chọn cơ sở dữ liệu được sao chép, bạn có thể xem nội dung của nó như hình dưới đây.

Sao chép CouchDB sang PouchDB

Giả sử có một cơ sở dữ liệu với tên Remote_Database trong CouchDB và nó chứa 3 tài liệu doc1, doc2 và doc3, có nội dung như hình dưới đây.

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

Sau đây là một ví dụ tạo một bản sao của cơ sở dữ liệu có tên Remote_Database được lưu trữ trong CouchDB trong bộ nhớ cục bộ.

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

Lưu đoạn mã trên vào một tệp có tên Replication_example2.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Replication_example2.js

Điều này tạo một bản sao của cơ sở dữ liệu có tên remote_database trong ví dụ PouchDB và hiển thị thông báo trên bảng điều khiển như hình dưới đây.

Database replicated successfully

Bạn có thể xác minh xem cơ sở dữ liệu có được sao chép trong phiên bản Túi của mình hay không bằng cách thực thi đoạn mã sau.

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

Nếu cơ sở dữ liệu được nhân bản khi thực thi đoạn mã trên, bạn sẽ nhận được nội dung của cơ sở dữ liệu được nhân bản như hình dưới đây.

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

Bạn có thể đồng bộ hóa cơ sở dữ liệu được lưu trữ cục bộ trong PouchDB với những cơ sở dữ liệu được lưu trữ trong CouchDB. Trong chương trước, chúng ta đã biết cách tái tạo cơ sở dữ liệu bằng cách sử dụng PouchDB. Ở đó chúng tôi đã sử dụng phương phápPouchDB.replicate(source, destination).

Ngoài ra, chúng ta cũng có thể sao chép dữ liệu, từ cơ sở dữ liệu cục bộ sang cơ sở dữ liệu từ xa và từ cơ sở dữ liệu từ xa sang cơ sở dữ liệu cục bộ bằng cách sử dụng replicate.to()replicate.from() như hình dưới đây.

//Replicating data from local database to remote database 
localDB.replicate.to(remoteDB);

//Replicating data from remote database to local database 
localDB.replicate.from(remoteDB);

Ở đâu, localDB là một đối tượng của cơ sở dữ liệu được lưu trữ cục bộ trong PouchDB và remoteDB là một đối tượng của cơ sở dữ liệu được lưu trữ trong CouchDB.

Thí dụ

Giả sử có một cơ sở dữ liệu với tên local_database trong PouchDB và nó chứa 3 tài liệu doc1, doc2 và doc3 có nội dung như hình dưới đây.

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

Và có một cơ sở dữ liệu với tên Remote_Database trong CouchDB và nó chứa 2 tài liệu doc1, doc2, có nội dung như hình bên dưới.

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

Dưới đây là ví dụ về việc đồng bộ hóa hai cơ sở dữ liệu này, trong đó một cơ sở dữ liệu được lưu trữ trong PouchDB và cơ sở dữ liệu khác được lưu trữ trong CouchDB, sử dụng replicate.to()replicate.from() các phương pháp.

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

Lưu đoạn mã trên vào một tệp có tên Synchronising_databases.js. Mở dấu nhắc lệnh và thực thi tệp JavaScript bằngnode như hình bên dưới.

C:\PouchDB_Examples >node Synchronising_databases.js

Thao tác này đồng bộ hóa hai cơ sở dữ liệu remoteDB và localDB, đồng thời hiển thị thông báo trên bảng điều khiển như hình dưới đây.

Databases synchronized successfully.

Sau khi đồng bộ hóa hai cơ sở dữ liệu, hãy truy cập http://127.0.0.1:5984/_utils/index.html và chọn remote_database. Bạn có thể thấy rằng các tài liệu của cơ sở dữ liệu cục bộ (003, 004, 005) đã được sao chép trong cơ sở dữ liệu này như được hiển thị bên dưới.

Theo cách tương tự, nếu bạn tìm nạp nội dung của local_database được lưu trữ trong PouchDB, bạn có thể quan sát rằng các tài liệu của cơ sở dữ liệu được lưu trữ trong CouchDB đã được sao chép ở đây.

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

Bạn có thể viết lại chương trình trên bằng cách sử dụng sync() phương thức do PouchDB cung cấp thay vì hai phương thức replicate.to()replicate.from() như hình bên dưới.

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

Khi thực hiện chương trình trên, nó đồng bộ hóa hai cơ sở dữ liệu hiển thị thông báo sau.

{ 
   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) 
   } 
}

Trong chương này, chúng ta sẽ thảo luận về các khái niệm như, nén và truy xuất dữ liệu hàng loạt từ PouchDB.

Nén chặt

Bạn có thể giảm kích thước cơ sở dữ liệu bằng cách xóa dữ liệu không sử dụng bằng cách sử dụng compact()phương pháp. Bạn có thể thu gọn cơ sở dữ liệu cục bộ cũng như cơ sở dữ liệu từ xa bằng phương pháp này.

Sau đây là một ví dụ minh họa việc sử dụng compact() phương thức trong 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);
   }
});

Phương pháp BulkGet

Bạn có thể truy xuất hàng loạt tài liệu bằng cách sử dụng bulkGet()phương pháp. Đối với phương pháp này, bạn cần chuyển một tập hợp các id và _rev.

Sau đây là một ví dụ minh họa việc sử dụng bulkGet() phương thức trong 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);
   }
});