📅  最后修改于: 2020-12-01 02:55:01             🧑  作者: Mango
复制是PouchDB的非常重要的功能。它可以帮助您制作数据库副本。您可以复制本地存储的PouchDB实例或远程存储的CouchDB实例。
使用此方法时,可以直接以String格式传递源数据库和目标数据库的位置,也可以传递表示它们的对象。
句法
PouchDB.replicate(source, target, [options])
源和目标都可以是PouchDB实例或CouchDB实例。
让我们在PouchDB中获取一个名为“ sample_database”的数据库,该数据库包含3个文档doc1,doc2和doc3,其内容如下。
{ id: '001',
key: '001',
value: { rev: '1-20a74c908d2c4e168d47571c4c6b4d5f' },
doc:
{ name: 'Ajeet',
age: 21,
Designation: 'Programmer',
_id: '001',
_rev: '1-20a74c908d2c4e168d47571c4c6b4d5f' } },
{ id: '002',
key: '002',
value: { rev: '1-89b7169dca7c47558e0aa47474b3e873' },
doc:
{ name: 'Robert',
age: 34,
Designation: 'Designer',
_id: '002',
_rev: '1-89b7169dca7c47558e0aa47474b3e873' } },
{ id: '003',
key: '003',
value: { rev: '1-5cf7e1bbd3bf4765a72a17e164692def' },
doc:
{ name: 'Rohila',
age: 15,
Designation: 'Student',
_id: '003',
_rev: '1-5cf7e1bbd3bf4765a72a17e164692def' } } ]
现在在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");
将以上代码保存在名为“ PouchDB_Examples”的文件夹中的“ Remote_Replication.js”文件中。打开命令提示符,然后使用node执行JavaScript文件:
node Remote_Replication.js
输出量
您可以打开CouchDB链接,并看到已创建数据库“ sample_database”。
图像:Replication3
您还可以在这里查看所有三个文档:
让我们在CouchDB服务器上创建一个名为“ remotedb”的数据库,其中包含三个文档doc1,doc2和doc3,其内容如下:
doc1 = {_id: '001', name: 'Jen', age: 20, Designation: 'Teacher'}
doc2 = {_id: '002', name: 'Jacob', age: 24, Designation: 'Lawyer'}
doc3 = {_id: '003', name: 'Johnny', age: 36, Designation: 'Plumber'}
让我们在本地服务器PouchDB中复制此数据库。
//Requiring the package
var PouchDB = require('PouchDB');
var localdb = 'remotedb';
var remotedb2 = 'http://localhost:5984/remotedb';
//Replicating a local database to Remote
PouchDB.replicate(remotedb2, localdb);
console.log("Database replicated successfully to PouchDB");
将以上代码保存在名为“ PouchDB_Examples”的文件夹中的“ Local_Replication.js”文件中。打开命令提示符,然后使用node执行JavaScript文件:
node Local_Replication.js
输出:
您可以使用以下代码来验证是否在您的Pouch实例中复制了数据库。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('remotedb');
//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);
}
});
将以上代码保存在名为“ PouchDB_Examples”的文件夹中的名为“ Verify_Replication.js”的文件中。打开命令提示符,然后使用node执行JavaScript文件:
node Verify_Replication.js
输出量
{ id: '001',
key: '001',
value: { rev: '1-a323b7088ac944b382e15c33cb771b6d' },
doc:
{ name: 'Jen',
age: '20',
Designation: 'Teacher',
_id: '001',
_rev: '1-a323b7088ac944b382e15c33cb771b6d' } },
{ id: '002',
key: '002',
value: { rev: '1-20f14cf10f3ffacd1b5447737240c995' },
doc:
{ name: 'Jacob',
age: '24',
Designation: 'Lawyer',
_id: '002',
_rev: '1-20f14cf10f3ffacd1b5447737240c995' } },
{ id: '003',
key: '003',
value: { rev: '1-6668a7d03dff7b43f37528f24061001b' },
doc:
{ name: 'Johnny',
age: '36',
Designation: 'Plumber',
_id: '003',
_rev: '1-6668a7d03dff7b43f37528f24061001b' } } ]