PouchDB - Réplication

L'une des fonctionnalités les plus importantes de PouchDB est la réplication, c'est-à-dire que vous pouvez faire une copie d'une base de données. Vous pouvez répliquer une instance PouchDB stockée localement ou une instance CouchDB stockée à distance.

Syntaxe

Voici la syntaxe de réplication d'une base de données dans PouchDB. Ici, une copie dusource databaseest la cible. À cette méthode, vous pouvez passer directement l'emplacement des bases de données source et de destination au format String, ou vous pouvez transmettre des objets les représentant.

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

La source et les cibles peuvent être des instances PouchDB ou CouchDB.

Répliquer LocalDB vers CouchDB

Supposons qu'il existe une base de données avec le nom sample_database dans PouchDB, et il contient 3 documents doc1, doc2 et doc3, dont le contenu est indiqué ci-dessous.

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

Voici un exemple qui fait une copie de la base de données nommée sample_database qui est stocké localement dans 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");

Enregistrez le code ci-dessus dans un fichier avec un nom Replication_example.js. Ouvrez l'invite de commande et exécutez le fichier JavaScript en utilisantnode comme indiqué ci-dessous.

C:\PouchDB_Examples >node Replication_example.js

Cela crée une copie de la base de données nommée sample_database dans l'instance CouchDB et affiche un message sur la console comme indiqué ci-dessous.

Database replicated successfully

Vous pouvez vérifier si la base de données est répliquée dans votre instance CouchDB en cliquant sur le lien suivant http://127.0.0.1:5984/_utils/index.html.

En cliquant, vous pouvez voir la liste des bases de données dans votre CouchDB. Vous pouvez également observer qu'une copie de la base de donnéessample_database est créé ici.

Si vous sélectionnez la base de données répliquée, vous pouvez afficher son contenu comme indiqué ci-dessous.

Répliquer CouchDB vers PouchDB

Supposons qu'il existe une base de données avec le nom Remote_Database dans CouchDB et il contient 3 documents, doc1, doc2 et doc3, dont le contenu est indiqué ci-dessous.

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

Voici un exemple qui fait une copie de la base de données nommée Remote_Database qui est stocké dans CouchDB dans le stockage 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");

Enregistrez le code ci-dessus dans un fichier avec le nom Replication_example2.js. Ouvrez l'invite de commande et exécutez le fichier JavaScript en utilisantnode comme indiqué ci-dessous.

C:\PouchDB_Examples >node Replication_example2.js

Cela fait une copie de la base de données nommée remote_database dans l'instance PouchDB et affiche un message sur la console comme indiqué ci-dessous.

Database replicated successfully

Vous pouvez vérifier si la base de données est répliquée dans votre instance Pouch en exécutant le code suivant.

//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 données est répliquée lors de l'exécution du code ci-dessus, vous obtiendrez le contenu de la base de données répliquée comme indiqué ci-dessous.

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