PouchDB - Replikasi

Salah satu fitur terpenting dari PouchDB adalah replikasi, yaitu Anda dapat membuat salinan database. Anda dapat mereplikasi instans PouchDB yang disimpan secara lokal atau instans CouchDB yang disimpan dari jarak jauh.

Sintaksis

Berikut ini adalah sintaks mereplikasi database di PouchDB. Ini, salinan filesource databaseadalah targetnya. Untuk metode ini, Anda dapat langsung meneruskan lokasi database sumber dan tujuan dalam format String, atau Anda dapat meneruskan objek yang mewakilinya.

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

Sumber dan target dapat berupa instans PouchDB atau instans CouchDB.

Mereplikasi LocalDB ke CouchDB

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

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

Berikut adalah contoh yang membuat salinan dari database bernama sample_database yang disimpan secara lokal di 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");

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

C:\PouchDB_Examples >node Replication_example.js

Ini membuat salinan database bernama sample_database di instance CouchDB dan menampilkan pesan di konsol seperti yang ditunjukkan di bawah ini.

Database replicated successfully

Anda dapat memverifikasi apakah database direplikasi dalam instans CouchDB Anda dengan mengklik tautan berikut http://127.0.0.1:5984/_utils/index.html.

Saat mengklik, Anda dapat melihat daftar database di CouchDB Anda. Anda juga dapat mengamati bahwa salinan databasesample_database dibuat di sini.

Jika Anda memilih database yang direplikasi, Anda dapat melihat isinya seperti yang ditunjukkan di bawah ini.

Mereplikasi CouchDB ke PouchDB

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

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

Berikut adalah contoh yang membuat salinan dari database bernama Remote_Database yang disimpan di CouchDB di penyimpanan lokal.

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

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

C:\PouchDB_Examples >node Replication_example2.js

Ini membuat salinan dari database bernama remote_database dalam instance PouchDB dan menampilkan pesan di konsol seperti yang ditunjukkan di bawah ini.

Database replicated successfully

Anda dapat memverifikasi apakah database direplikasi dalam instans Pouch Anda dengan menjalankan kode berikut.

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

Jika database direplikasi saat menjalankan kode di atas, Anda akan mendapatkan konten database yang direplikasi seperti yang ditunjukkan di bawah ini.

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