PouchDB - Sinkronisasi

Anda dapat menyinkronkan database yang disimpan secara lokal di PouchDB dengan yang disimpan di CouchDB. Di bab sebelumnya, kita telah melihat bagaimana mereplikasi database menggunakan PouchDB. Di sana kami telah menggunakan metode tersebutPouchDB.replicate(source, destination).

Selain itu, kami juga dapat mereplikasi data, dari database lokal ke database jarak jauh, dan dari database jarak jauh ke database lokal menggunakan replicate.to() dan replicate.from() metode seperti yang ditunjukkan di bawah ini.

//Replicating data from local database to remote database 
localDB.replicate.to(remoteDB);

//Replicating data from remote database to local database 
localDB.replicate.from(remoteDB);

Dimana, localDB adalah objek database yang disimpan secara lokal di PouchDB dan remoteDB adalah objek database yang disimpan di CouchDB.

Contoh

Misalkan ada database dengan nama local_database di PouchDB, dan berisi 3 dokumen, doc1, doc2, dan doc3, memiliki konten seperti yang ditunjukkan di bawah ini.

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

Dan ada database dengan nama Remote_Database di CouchDB dan berisi 2 dokumen doc1, doc2, yang isinya seperti di bawah ini.

doc1 = {_id: '001', name: 'Geeta', age: 25, Designation: 'Programmer'} 
doc2 = {_id: '002', name: 'Zara Ali', age: 24, Designation: 'Manager'}

Berikut adalah contoh sinkronisasi kedua database ini, di mana satu disimpan di PouchDB dan lainnya disimpan di CouchDB, menggunakan replicate.to() dan replicate.from() metode.

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

Simpan kode di atas dalam file dengan nama Synchronising_databases.js. Buka command prompt dan jalankan file JavaScript menggunakannode seperti gambar dibawah.

C:\PouchDB_Examples >node Synchronising_databases.js

Ini menyinkronkan dua database remoteDB dan localDB, dan menampilkan pesan di konsol seperti yang ditunjukkan di bawah ini.

Databases synchronized successfully.

Setelah menyinkronkan kedua database, kunjungi http://127.0.0.1:5984/_utils/index.html dan pilih remote_database. Anda dapat mengamati bahwa dokumen dari database lokal (003, 004, 005) telah disalin dalam database ini seperti yang ditunjukkan di bawah ini.

Dengan cara yang sama, jika Anda mengambil konten file local_database disimpan di PouchDB Anda dapat mengamati bahwa dokumen dari database yang disimpan di CouchDB disalin di sini.

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

Anda dapat menulis ulang program di atas menggunakan sync() metode yang disediakan oleh PouchDB, bukan dua metode replicate.to() dan replicate.from() seperti gambar dibawah.

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

Saat menjalankan program di atas, ini menyinkronkan dua database yang menampilkan pesan berikut.

{ 
   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) 
   } 
}