PouchDB - Actualizar lote
Puede actualizar una serie de documentos en PouchDB a la vez utilizando el bulkDocs()método. Para hacerlo, debe crear una matriz de documentos donde, cada documento contiene_id, _rev y los valores que se van a actualizar.
Suponga que la base de datos llamada my_database que se almacena localmente en PouchDB contiene 3 documentos a saber, doc1, doc2, doc3 con el siguiente contenido.
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'}
Suponga que tenemos que aumentar los valores de edad en los 3 documentos en 2 años. Para que esto suceda, primero debe obtener el_revvalores. Por lo tanto, obtenga el contenido de estos documentos utilizando el siguiente código.
//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);
}
});
Guarde el código anterior como bulk_fetch.js. Al ejecutar, el programa anterior le da los valores _id y _rev de los documentos en la base de datos como se muestra a continuación.
[
{
id: '001',
key: '001',
value: { rev: '1-1604b0c3ff69dc1e261265fd60808404' }
},
{
id: '002',
key: '002',
value: { rev: '1-b5e49db7e984841bf12a13e3ee548125' }
},
{
id: '003',
key: '003',
value: { rev: '1-a7b342786ecc707aa91f3b321a177b51' }
}
]
Ahora, puede actualizar los documentos utilizando sus respectivos _id y _rev valores como se muestra a continuación.
//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");
}
});
Guarde el código anterior en un archivo con el nombre Update_All_Document.js. Abra el símbolo del sistema y ejecute el archivo JavaScript usando el nodo como se muestra a continuación.
C:\PouchDB_Examples >node Update_All_Document.js
Esto actualiza todos los documentos que existen en la base de datos denominada my_database que se almacena localmente, mostrando el siguiente mensaje.
Documents Updated Successfully
Ahora, si ejecuta el bulk_fetch.js programa agregando {include_docs: true} como parámetro para allDocs() , antes de la devolución de llamada, podrá ver los valores de los documentos actualizados, como se muestra a continuación.
[
{
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'
}
}
]
Actualización de lote desde una base de datos remota
Puede actualizar todos los documentos de la base de datos que se almacena de forma remota en el servidor (CouchDB).
Para hacerlo, en lugar de un nombre de base de datos, debe pasar la ruta a la base de datos en CouchDB, que contiene el documento que se va a leer.
Ejemplo
Supongamos que hay una base de datos llamada my_databaseen el servidor CouchDB. Luego, si verifica la lista de bases de datos en CouchDB usando la URLhttp://127.0.0.1:5984/_utils/index.html obtendrá la siguiente captura de pantalla.
Y supongamos que si seleccionamos la base de datos llamada my_database, puede observar que contiene 3 documentos como se muestra en la siguiente captura de pantalla.
Ahora, busque el contenido de estos documentos usando el siguiente código.
//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);
}
});
Guarde el código anterior como remote_bulk_fetch.js. Al ejecutarlo, el programa anterior le brinda el contenido de todos los documentos en la base de datos como se muestra a continuación.
[
{
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 continuación se muestra un ejemplo de actualización de todos los documentos que existen en una base de datos denominada my_database que se almacena en el servidor 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");
}
});
Guarde el código anterior en un archivo con el nombre Remote_Update_Document.js. Abra el símbolo del sistema y ejecute el archivo JavaScript usando el nodo como se muestra a continuación.
C:\PouchDB_Examples >node Remote_Update_Document.js
Esto actualiza el contenido de todo el documento dado que existe en la base de datos llamada my_database que se almacena en CouchDB y muestra el siguiente mensaje.
Documents Updated Successfully
Ahora, si ejecuta el remote_bulk_fetch.js programa podrá ver los valores de los documentos actualizados, como se muestra a continuación.
[
{
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
}
}
]