PouchDB - Yığını Güncelle
PouchDB'deki bir dizi belgeyi aynı anda güncelleyebilirsiniz. bulkDocs()yöntem. Bunu yapmak için, her belgenin aşağıdakileri içerdiği bir dizi belge oluşturmanız gerekir:_id, _rev ve güncellenecek değerler.
Diyelim ki veritabanı my_database PouchDB'de yerel olarak saklanan, aşağıdaki içeriklerle doc1, doc2, doc3 olmak üzere 3 belge 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'}
Her 3 belgede de yaş değerlerini 2 yıl artırmamız gerektiğini varsayalım. Bunun gerçekleşmesi için önce_revdeğerler. Bu nedenle, aşağıdaki kodu kullanarak bu belgelerin içeriğini alın.
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_database');
//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true},function(err, docs) {
if (err) {
return console.log(err);
} else {
console.log(docs.rows);
}
});
Yukarıdaki kodu farklı kaydedin bulk_fetch.js. Yürütüldüğünde, yukarıdaki program size veritabanındaki belgelerin _id ve _rev değerlerini aşağıda gösterildiği gibi verir.
[
{
id: '001',
key: '001',
value: { rev: '1-1604b0c3ff69dc1e261265fd60808404' }
},
{
id: '002',
key: '002',
value: { rev: '1-b5e49db7e984841bf12a13e3ee548125' }
},
{
id: '003',
key: '003',
value: { rev: '1-a7b342786ecc707aa91f3b321a177b51' }
}
]
Şimdi, ilgili belgeleri kullanarak belgeleri güncelleyebilirsiniz. _id ve _rev değerler aşağıda gösterildiği gibidir.
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('my_databas');
//Preparing the document
docs = [{_id : '001', _rev: '1-1604b0c3ff69dc1e261265fd60808404', age : 25, },
{_id : '002', _rev: '1-b5e49db7e984841bf12a13e3ee548125', age : 26, },
{_id : '003', _rev: '1-a7b342786ecc707aa91f3b321a177b51', age : 27 }]
//Updating the documents in bulk
db.bulkDocs(docs, function(err, response) {
if (err) {
return console.log(err);
} else {
console.log("Documents Updated Successfully");
}
});
Yukarıdaki kodu adıyla bir dosyaya kaydedin Update_All_Document.js. Komut istemini açın ve aşağıda gösterildiği gibi düğümü kullanarak JavaScript dosyasını çalıştırın.
C:\PouchDB_Examples >node Update_All_Document.js
Bu, adlı veritabanında bulunan tüm belgeleri günceller my_database yerel olarak saklanır ve aşağıdaki mesajı görüntüler.
Documents Updated Successfully
Şimdi, eğer bulk_fetch.js ekleyerek program {include_docs: true} parametre olarak allDocs() işlevi, geri aramadan önce, aşağıda gösterildiği gibi güncellenen belgelerin değerlerini göreceksiniz.
[
{
id: '001',
key: '001',
value: { rev: '2-77f3a9974dd578d12f3f2a33aae64c8d' },
doc: {
age: 25,
_id: '001',
_rev: '2-77f3a9974dd578d12f3f2a33aae64c8d'
}
},
{
id: '002',
key: '002',
value: { rev: '2-43966007568ce9567c96422195fcfa0d' },
doc: {
age: 26,
_id: '002',
_rev: '2-43966007568ce9567c96422195fcfa0d'
}
},
{
id: '003',
key: '003',
value: { rev: '2-6c5349652527f4f39583ff14f23cd677' },
doc: {
age: 27,
_id: '003',
_rev: '2-6c5349652527f4f39583ff14f23cd677'
}
}
]
Uzak Veritabanından Toplu İşlem Güncelleme
Sunucuda (CouchDB) uzaktan depolanan veritabanından tüm belgeleri güncelleyebilirsiniz.
Bunu yapmak için, bir veritabanı adı yerine, okunacak belgeyi içeren CouchDB'deki veritabanına giden yolu iletmeniz gerekir.
Misal
Adlı bir veritabanı olduğunu varsayalım my_databaseCouchDB sunucusunda. Ardından, URL'yi kullanarak CouchDB'deki veritabanları listesini doğrularsanızhttp://127.0.0.1:5984/_utils/index.html aşağıdaki ekran görüntüsünü alacaksınız.
Ve adlı veritabanını seçersek my_databaseaşağıdaki ekran görüntüsünde gösterildiği gibi 3 belge içerdiğini görebilirsiniz.
Şimdi, aşağıdaki kodu kullanarak bu belgelerin içeriğini alın.
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true}, function(err, docs) {
if (err) {
return console.log(err);
} else {
console.log(docs.rows);
}
});
Yukarıdaki kodu farklı kaydedin remote_bulk_fetch.js. Yürütüldüğünde, yukarıdaki program size veritabanındaki tüm belgelerin içeriğini aşağıda gösterildiği gibi verir.
[
{
id: '001',
key: '001',
value: { rev: '3-552920d1ca372986fad7b996ce365f5d' },
doc: {
_id: '001',
_rev: '3-552920d1ca372986fad7b996ce365f5d',
name: 'Raju',
age: 23,
designation: 'Designer'
}
},
{
id: '002',
key: '002',
value: { rev: '1-9af15cb11054ebe03a7816bf6c5e4128' },
doc: {
_id: '002',
_rev: '1-9af15cb11054ebe03a7816bf6c5e4128',
name: 'Robert',
age: 24,
Designation: 'Programmer'
}
},
{
id: '003',
key: '003',
value: { rev: '1-3033b5a78e915c52fd37325d42eb3935' },
doc: {
_id: '003',
_rev: '1-3033b5a78e915c52fd37325d42eb3935',
name: 'Rahim',
age: 25,
Designation: 'Programmer'
}
}
]
Aşağıda, adlı bir veritabanında bulunan tüm belgelerin güncellenmesine bir örnek verilmiştir. my_database hangi CouchDB sunucusunda saklanır.
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');
//Preparing the document
docs = [{_id : '001', _rev: '3-552920d1ca372986fad7b996ce365f5d', age : 24, },
{_id : '002', _rev: '1-9af15cb11054ebe03a7816bf6c5e4128', age : 26, },
{_id : '003', _rev: '1-3033b5a78e915c52fd37325d42eb3935', age : 27}]
//Inserting Document
db.bulkDocs(docs, function(err, response) {
if (err) {
return console.log(err);
} else {
console.log(+"Documents Updated Successfully");
}
});
Yukarıdaki kodu adıyla bir dosyaya kaydedin Remote_Update_Document.js. Komut istemini açın ve aşağıda gösterildiği gibi düğümü kullanarak JavaScript dosyasını çalıştırın.
C:\PouchDB_Examples >node Remote_Update_Document.js
Bu, adlı veritabanında bulunan tüm verilen belgelerin içeriğini günceller. my_database CouchDB'de saklanır ve aşağıdaki mesajı görüntüler.
Documents Updated Successfully
Şimdi, eğer remote_bulk_fetch.js programı aşağıda gösterildiği gibi güncellenen belgelerin değerlerini göreceksiniz.
[
{
id: '001',
key: '001',
value: { rev: '4-6bc8d9c7a60fed2ed1667ec0740c1f39' },
doc: {
_id: '001',
_rev: '4-6bc8d9c7a60fed2ed1667ec0740c1f39',
age: 25
}
},
{
id: '002',
key: '002',
value: { rev: '2-1aa24ce77d96bb9d2a0675cdf1e113e0' },
doc: {
_id: '002',
_rev: '2-1aa24ce77d96bb9d2a0675cdf1e113e0',
age: 26
}
},
{
id: '003',
key: '003',
value: { rev: '2-fa113149ba618eda77f73072974a2bc1' },
doc: {
_id: '003',
_rev: '2-fa113149ba618eda77f73072974a2bc1',
age: 27
}
}
]