PouchDB - Пакет обновления
Вы можете обновить массив документов в PouchDB сразу, используя bulkDocs()метод. Для этого вам нужно создать массив документов, в котором каждый документ содержит_id, _rev и значения, которые необходимо обновить.
Предположим, что база данных с именем my_database который хранится локально в PouchDB, содержит 3 документа, а именно doc1, doc2, doc3 со следующим содержимым.
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'}
Предположим, нам нужно увеличить значения возраста во всех трех документах на 2 года. Для этого сначала нужно получить_revзначения. Поэтому получите содержимое этих документов, используя следующий код.
//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);
}
});
Сохраните приведенный выше код как bulk_fetch.js. При выполнении вышеуказанная программа дает вам значения _id и _rev документов в базе данных, как показано ниже.
[
{
id: '001',
key: '001',
value: { rev: '1-1604b0c3ff69dc1e261265fd60808404' }
},
{
id: '002',
key: '002',
value: { rev: '1-b5e49db7e984841bf12a13e3ee548125' }
},
{
id: '003',
key: '003',
value: { rev: '1-a7b342786ecc707aa91f3b321a177b51' }
}
]
Теперь вы можете обновлять документы, используя их соответствующие _id и _rev значения, как показано ниже.
//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");
}
});
Сохраните приведенный выше код в файл с именем Update_All_Document.js. Откройте командную строку и выполните файл JavaScript, используя узел, как показано ниже.
C:\PouchDB_Examples >node Update_All_Document.js
Это обновляет все документы, которые существуют в базе данных с именем my_database который хранится локально, отображается следующее сообщение.
Documents Updated Successfully
Теперь, если вы выполните bulk_fetch.js программа, добавив {include_docs: true} как параметр allDocs() , то перед обратным вызовом вы увидите значения обновленных документов, как показано ниже.
[
{
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'
}
}
]
Обновление пакета из удаленной базы данных
Вы можете обновить все документы из базы данных, которая хранится удаленно на сервере (CouchDB).
Для этого вместо имени базы данных вам необходимо передать путь к базе данных в CouchDB, которая содержит документ, который необходимо прочитать.
пример
Предположим, есть база данных с именем my_databaseна сервере CouchDB. Затем, если вы проверите список баз данных в CouchDB, используя URL-адресhttp://127.0.0.1:5984/_utils/index.html вы получите следующий снимок экрана.
И предположим, что если мы выберем базу данных с именем my_database, вы можете заметить, что он содержит 3 документа, как показано на следующем снимке экрана.
Теперь получите содержимое этих документов, используя следующий код.
//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);
}
});
Сохраните приведенный выше код как remote_bulk_fetch.js. При выполнении вышеуказанная программа выдает вам содержимое всех документов в базе данных, как показано ниже.
[
{
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'
}
}
]
Ниже приведен пример обновления всех документов, существующих в базе данных с именем my_database который хранится на сервере CouchDB.
//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");
}
});
Сохраните приведенный выше код в файл с именем Remote_Update_Document.js. Откройте командную строку и выполните файл JavaScript, используя узел, как показано ниже.
C:\PouchDB_Examples >node Remote_Update_Document.js
Это обновляет содержимое всего данного документа, который существует в базе данных с именем my_database который хранится в CouchDB, и отображает следующее сообщение.
Documents Updated Successfully
Теперь, если вы выполните remote_bulk_fetch.js Программа вы сможете увидеть значения обновленных документов, как показано ниже.
[
{
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
}
}
]