Pouchdb 简明教程

PouchDB - Replication

PouchDB 最重要的功能之一是复制,即你可以制作数据库副本。你可以复制存储在本地位置的 PouchDB 实例或存储在远程位置的 CouchDB 实例。

Syntax

以下是复制 PouchDB 中数据库的语法。此处, source database 的副本是目标。你可以直接以字符串格式向此方法传递源数据库和目标数据库的位置,或可以传递表示它们的项目。

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

源和目标都可以是 PouchDB 实例或 CouchDB 实例。

Replicating LocalDB to CouchDB

假设 PouchDB 中有一个名为 sample_database 的数据库,它包含 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'}

这是一个创建存储在 CouchDB 中名为 sample_database 的数据库副本的示例。

//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 的文件中。打开命令提示符并使用 node 执行 JavaScript 文件,如下所示。

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 创建在此处。

sample database

如果您选择复制的数据库,则您可以查看如下所示的内容。

replicated database

Replicating CouchDB to PouchDB

假定在 CouchDB 中有一个名为 Remote_Database 的数据库,其中包含文档 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'}

这是一个将 CouchDB 中名为 Remote_Database 的数据库的副本保存在本地存储中的示例。

//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 将上述代码保存到文件中。打开命令窗口,并使用 node 执行 JavaScript 文件,如下所示。

C:\PouchDB_Examples >node Replication_example2.js

这将对 PouchDB 实例中名为 remote_database 的数据库进行副本,并在控制台上显示如下所示的消息。

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