PouchDB - Çoğaltma

PouchDB'nin en önemli özelliklerinden biri replikasyondur, yani bir veritabanının kopyasını oluşturabilirsiniz. Yerel olarak depolanan bir PouchDB örneğini veya uzaktan depolanan bir CouchDB örneğini kopyalayabilirsiniz.

Sözdizimi

Aşağıda, PouchDB'de bir veritabanının kopyalanmasının sözdizimi verilmiştir. Burada bir kopyasısource databasehedeftir. Bu yönteme, kaynak ve hedef veritabanlarının konumunu doğrudan String formatında iletebilir veya bunları temsil eden nesneleri iletebilirsiniz.

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

Hem kaynak hem de hedefler, PouchDB örnekleri veya CouchDB örnekleri olabilir.

LocalDB'yi CouchDB'ye çoğaltma

İsminde bir veritabanı olduğunu varsayalım sample_database PouchDB'de yer alır ve içeriği aşağıda gösterildiği gibi olan 3 belge doc1, doc2 ve doc3 içerir.

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

Aşağıda, adlı veritabanının bir kopyasını oluşturan bir örnek yer almaktadır. sample_database yerel olarak CouchDB'de saklanır.

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

Yukarıdaki kodu adıyla bir dosyaya kaydedin Replication_example.js. Komut istemini açın ve JavaScript dosyasını kullanarak çalıştırın.node Aşağıda gösterildiği gibi.

C:\PouchDB_Examples >node Replication_example.js

Bu, CouchDB örneğinde sample_database adlı veritabanının bir kopyasını oluşturur ve aşağıda gösterildiği gibi konsolda bir mesaj görüntüler.

Database replicated successfully

Aşağıdaki bağlantıya tıklayarak veritabanının CouchDB örneğinizde çoğaltılıp kopyalanmadığını doğrulayabilirsiniz. http://127.0.0.1:5984/_utils/index.html.

Tıkladığınızda, CouchDB'nizdeki veri tabanlarının listesini görebilirsiniz. Veritabanının bir kopyasınınsample_database burada oluşturulur.

Çoğaltılan veritabanını seçerseniz, içeriğini aşağıda gösterildiği gibi görüntüleyebilirsiniz.

CouchDB'yi PouchDB'ye çoğaltma

İsminde bir veritabanı olduğunu varsayalım Remote_Database CouchDB'de ve aşağıda gösterildiği gibi içeriklere sahip 3 belge, doc1, doc2 ve doc3 içerir.

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

Aşağıda, adlı veritabanının bir kopyasını oluşturan bir örnek yer almaktadır. Remote_Database yerel depolama alanında CouchDB'de saklanır.

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

Yukarıdaki kodu adıyla bir dosyaya kaydedin Replication_example2.js. Komut istemini açın ve JavaScript dosyasını kullanarak çalıştırın.node Aşağıda gösterildiği gibi.

C:\PouchDB_Examples >node Replication_example2.js

Bu, adlı veritabanının bir kopyasını oluşturur remote_database PouchDB örneğindedir ve aşağıda gösterildiği gibi konsolda bir mesaj görüntüler.

Database replicated successfully

Aşağıdaki kodu çalıştırarak, Pouch örneğinizde veritabanının çoğaltılıp kopyalanmadığını doğrulayabilirsiniz.

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

Veri tabanı yukarıdaki kod çalıştırılırken çoğaltılırsa, aşağıda gösterildiği gibi çoğaltılmış veri tabanının içeriğini alacaksınız.

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