PouchDB - Synchronisation
Sie können die in PouchDB lokal gespeicherten Datenbanken mit den in CouchDB gespeicherten Datenbanken synchronisieren. Im vorherigen Kapitel haben wir gesehen, wie Datenbanken mit PouchDB repliziert werden. Dort haben wir die Methode angewendetPouchDB.replicate(source, destination).
Darüber hinaus können wir die Daten mithilfe von von der lokalen Datenbank in die entfernte Datenbank und von der entfernten Datenbank in die lokale Datenbank replizieren replicate.to() und replicate.from() Methoden wie unten gezeigt.
//Replicating data from local database to remote database
localDB.replicate.to(remoteDB);
//Replicating data from remote database to local database
localDB.replicate.from(remoteDB);
Wo, localDB ist ein Objekt der Datenbank, das lokal in PouchDB und gespeichert ist remoteDB ist ein Objekt einer Datenbank, die in CouchDB gespeichert ist.
Beispiel
Angenommen, es gibt eine Datenbank mit dem Namen local_database in PouchDB und enthält 3 Dokumente, doc1, doc2 und doc3, deren Inhalt wie unten gezeigt ist.
doc1 = {_id: '003', name: 'Ram', age: 26, Designation: 'Programmer'}
doc2 = {_id: '004', name: 'Robert', age: 27, Designation: 'Programmer'}
doc3 = {_id: '005', name: 'Rahim', age: 28, Designation: 'Programmer'}
Und es gibt eine Datenbank mit dem Namen Remote_Database in CouchDB und es enthält 2 Dokumente doc1, doc2 mit Inhalten wie unten gezeigt.
doc1 = {_id: '001', name: 'Geeta', age: 25, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Zara Ali', age: 24, Designation: 'Manager'}
Im Folgenden finden Sie ein Beispiel für die Synchronisierung dieser beiden Datenbanken, wobei eine in PouchDB und die andere in CouchDB gespeichert ist replicate.to() und replicate.from() Methoden.
//Requiring the package
var PouchDB = require('PouchDB');
//Creating local database object
var localDB = new PouchDB('local_database');
//Creating remote database object
var remoteDB = new PouchDB('http://localhost:5984/remote_database');
//Synchronising both databases
localDB.replicate.to(remoteDB);
remoteDB.replicate.from(localDB);
console.log("Databases synchronized successfully");
Speichern Sie den obigen Code in einer Datei mit dem Namen Synchronising_databases.js. Öffnen Sie die Eingabeaufforderung und führen Sie die JavaScript-Datei mit ausnode Wie nachfolgend dargestellt.
C:\PouchDB_Examples >node Synchronising_databases.js
Dadurch werden die beiden Datenbanken remoteDB und localDB synchronisiert und eine Meldung auf der Konsole angezeigt (siehe unten).
Databases synchronized successfully.
Nach dem Synchronisieren der beiden Datenbanken besuchen Sie die http://127.0.0.1:5984/_utils/index.html und wählen Sie die remote_database. Sie können beobachten, dass die Dokumente der lokalen Datenbank (003, 004, 005) wie unten gezeigt in diese Datenbank kopiert wurden.
Auf die gleiche Weise, wenn Sie den Inhalt der abrufen local_database In PouchDB gespeichert können Sie beobachten, dass Dokumente der in CouchDB gespeicherten Datenbank hier kopiert wurden.
[
{
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-bf4619471ac346fdde46cfa8fbf3587f' },
doc: {
name: 'Ram',
age: 26,
Designation: 'Programmer',
_id: '003',
_rev: '1-bf4619471ac346fdde46cfa8fbf3587f'
}
},
{
id: '004',
key: '004',
value: { rev: '1-29b8f803958c994e3eb37912a45d869c' },
doc: {
name: 'Robert',
age: 27,
Designation: 'Programmer',
_id: '004',
_rev: '1-29b8f803958c994e3eb37912a45d869c'
}
},
{
id: '005',
key: '005',
value: { rev: '1-0eb89f71998ffa8430a640fdb081abd2' },
doc: {
name: 'Rahim',
age: 28,
Designation: 'Programmer',
_id: '005',
_rev: '1-0eb89f71998ffa8430a640fdb081abd2'
}
}
]
Sie können das obige Programm mit dem umschreiben sync() Methode von PouchDB anstelle der beiden Methoden replicate.to() und replicate.from() Wie nachfolgend dargestellt.
//Requiring the package
var PouchDB = require('PouchDB');
//Creating local database object
var localDB = new PouchDB('local');
//Creating remote database object
var remoteDB = new PouchDB('http://localhost:5984/remote_database');
//Synchronising Remote and local databases
localDB.sync(remoteDB, function(err, response) {
if (err) {
return console.log(err);
} else {
console.log(response);
}
});
Beim Ausführen des obigen Programms werden die beiden Datenbanken synchronisiert, wobei die folgende Meldung angezeigt wird.
{
push: {
ok: true,
start_time: Fri Mar 25 2016 15:54:37 GMT+0530 (India Standard Time),
docs_read: 6,
docs_written: 6,
doc_write_failures: 0,
errors: [],
last_seq: 10,
status: 'complete',
end_time: Fri Mar 25 2016 15:54:37 GMT+0530 (India Standard Time)
},
pull: {
ok: true,
start_time: Fri Mar 25 2016 15:54:37 GMT+0530 (India Standard Time),
docs_read: 0,
docs_written: 0,
doc_write_failures: 0,
errors: [],
last_seq: 2,
status: 'complete',
end_time: Fri Mar 25 2016 15:54:37 GMT+0530 (India Standard Time)
}
}