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