PouchDB - Replicación

Una de las características más importantes de PouchDB es la replicación, es decir, puede hacer una copia de una base de datos. Puede replicar una instancia de PouchDB almacenada localmente o una instancia de CouchDB almacenada de forma remota.

Sintaxis

A continuación se muestra la sintaxis de la replicación de una base de datos en PouchDB. Aquí, una copia delsource databasees el objetivo. A este método, puede pasar directamente la ubicación de las bases de datos de origen y destino en formato String, o puede pasar objetos que las representen.

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

Tanto el origen como los destinos pueden ser instancias de PouchDB o instancias de CouchDB.

Replicando LocalDB a CouchDB

Supongamos que hay una base de datos con el nombre sample_database en PouchDB, y contiene 3 documentos doc1, doc2 y doc3, con los contenidos que se muestran a continuación.

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

A continuación se muestra un ejemplo que hace una copia de la base de datos denominada sample_database que se almacena localmente en 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");

Guarde el código anterior en un archivo con nombre Replication_example.js. Abra el símbolo del sistema y ejecute el archivo JavaScript usandonode Como se muestra abajo.

C:\PouchDB_Examples >node Replication_example.js

Esto hace una copia de la base de datos llamada sample_database en la instancia de CouchDB y muestra un mensaje en la consola como se muestra a continuación.

Database replicated successfully

Puede verificar si la base de datos está replicada en su instancia de CouchDB haciendo clic en el siguiente enlace http://127.0.0.1:5984/_utils/index.html.

Al hacer clic, puede ver la lista de bases de datos en su CouchDB. También puede observar que una copia de la base de datossample_database se crea aquí.

Si selecciona la base de datos replicada, puede ver su contenido como se muestra a continuación.

Replicando CouchDB a PouchDB

Supongamos que hay una base de datos con el nombre Remote_Database en CouchDB y contiene 3 documentos, doc1, doc2 y doc3, con los contenidos que se muestran a continuación.

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

A continuación se muestra un ejemplo que hace una copia de la base de datos denominada Remote_Database que se almacena en CouchDB en el almacenamiento local.

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

Guarde el código anterior en un archivo con el nombre Replication_example2.js. Abra el símbolo del sistema y ejecute el archivo JavaScript usandonode Como se muestra abajo.

C:\PouchDB_Examples >node Replication_example2.js

Esto hace una copia de la base de datos llamada remote_database en la instancia de PouchDB y muestra un mensaje en la consola como se muestra a continuación.

Database replicated successfully

Puede verificar si la base de datos está replicada en su instancia de Pouch ejecutando el siguiente código.

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

Si la base de datos se replica al ejecutar el código anterior, obtendrá el contenido de la base de datos replicada como se muestra a continuación.

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