PouchDB - Репликация
Одной из наиболее важных функций PouchDB является репликация, то есть вы можете сделать копию базы данных. Вы можете реплицировать либо экземпляр PouchDB, хранящийся локально, либо экземпляр CouchDB, хранящийся удаленно.
Синтаксис
Ниже приведен синтаксис репликации базы данных в PouchDB. Здесь копияsource databaseэто цель. В этот метод вы можете напрямую передать расположение исходной и целевой баз данных в строковом формате или передать объекты, представляющие их.
PouchDB.replicate(source, target, [options])
И источник, и цели могут быть экземплярами PouchDB или экземплярами CouchDB.
Репликация LocalDB в CouchDB
Допустим, есть база данных с названием sample_database в PouchDB и содержит 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'}
Ниже приведен пример создания копии базы данных с именем sample_database который хранится локально в 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");
Сохраните приведенный выше код в файл с именем Replication_example.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.
C:\PouchDB_Examples >node Replication_example.js
Это создает копию базы данных с именем sample_database в экземпляре CouchDB и отображает сообщение на консоли, как показано ниже.
Database replicated successfully
Вы можете проверить, реплицируется ли база данных в вашем экземпляре CouchDB, щелкнув следующую ссылку http://127.0.0.1:5984/_utils/index.html.
Щелкнув, вы увидите список баз данных в вашем CouchDB. Вы также можете заметить, что копия базы данныхsample_database создается здесь.
Если вы выберете реплицированную базу данных, вы сможете просмотреть ее содержимое, как показано ниже.
Репликация CouchDB в PouchDB
Допустим, есть база данных с названием Remote_Database в CouchDB и содержит 3 документа: 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'}
Ниже приведен пример создания копии базы данных с именем Remote_Database который хранится в CouchDB в локальном хранилище.
//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. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.
C:\PouchDB_Examples >node Replication_example2.js
Это создает копию базы данных с именем remote_database в экземпляре PouchDB и отображает сообщение на консоли, как показано ниже.
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'
}
}
]