PouchDB - Agregar archivo adjunto

Puede adjuntar un objeto binario a un documento utilizando el putAttachment() método en PouchDB.

Sintaxis

A continuación se muestra la sintaxis del putAttachment(). Para este método, tenemos que pasar la identificación del documento, la identificación del archivo adjunto, el tipo MIME junto con el archivo adjunto. Este método también acepta una función de devolución de llamada opcional.

db.putAttachment( docId, attachmentId, attachment, type, [callback] );

Podemos preparar el archivo adjunto usando objetos blob o búfer, donde blob se utiliza mientras se trabaja con el navegador y buffer se utiliza al trabajar con Node.js, ya que estamos demostrando nuestros programas en Node.js, usamos objetos de búfer para preparar documentos.

Ejemplo

A continuación se muestra un ejemplo de cómo crear un documento con un archivo adjunto, dentro de una base de datos llamada my_database en PouchDB usando putAttachment() método.

//Requiring the package 
var PouchDB = require('PouchDB');

//Creating the database object var db = new PouchDB('my_database');

//Preparing the attachment 
var my_attachment = new Buffer(['Welcome to tutorialspoint'], {type: 'text/plain'});

//Adding attachment to a document 
db.putAttachment('001', 'att_1.txt', my_attachment, 'text/plain', function(err, res) { 
   if (err) { 
      return console.log(err); 
   } else { 
      console.log(res+"Attachment added successfully") 
   } 
});

Guarde el código anterior en un archivo con nombre Add_Attachment.js. Abra el símbolo del sistema y ejecute el archivo JavaScript usandonode Como se muestra abajo.

C:\PouchDB_Examples >node Add_Attachment.js

Esto crea un documento vacío que le agrega un adjunto, en la base de datos llamada my_database que está almacenado en PouchDB y muestra el siguiente mensaje.

Attachment added successfully

Puede verificar si el archivo adjunto se agrega leyendo el documento con el siguiente código.

//Requiring the package 
var PouchDB = require('PouchDB');

//Creating the database object var db = new PouchDB('my_database');

//Reading the Document 
db.get('001',{attachments: true}, function(err, doc) { 
   if (err) { 
      return console.log(err); 
   } else { 
      console.log(doc); 
   } 
});

Guarde el código anterior como read_doc.jsy ejecutarlo. Al ejecutar este programa, puede ver el siguiente contenido del documento.

{ 
   _attachments: { 
      att_1.txt: { 
         content_type: 'text/plain',
         digest: 'md5-k7iFrf4NoInN9jSQT9WfcQ==',
         data: 'AA==' 
      } 
   },
   _id: '001',
   _rev: '1-620fd5f41d3328fcbf9ce7504338a51d' 
}

Agregar un archivo adjunto a un documento existente

Supongamos que hay un documento en una base de datos con el nombre my_database PouchDB con id '002'. Puede obtener su contenido ejecutando elread_doc.js cambiando el valor de id a 002, Como se muestra abajo.

{ 
   name: 'Raju',
   age: 23,
   designation: 'Designer',
   _id: '002',
   _rev: '1-05ca7b5f3f4762a9fb2d119cd34c8d40' 
}

Ahora, puede agregar un adjunto a este documento usando su _rev valor.

//Requiring the package 
var PouchDB = require('PouchDB');

//Creating the database object var db = new PouchDB('my_database');

//Adding attachment to existing document 
var my_attachment = new Buffer (['Welcome to tutorialspoint'], {type: 'text/plain'});

rev = '1-05ca7b5f3f4762a9fb2d119cd34c8d40'; 
db.putAttachment('002', 'att_1.txt', rev, my_attachment, 'text/plain', function(err, res) { 
   if (err) { 
      return console.log(err); 
   } else { 
      console.log (res + "Attachment added successfully") 
   } 
});

Guarde el código anterior en un archivo con el nombre Add_Attachment_to_doc.js. Abra el símbolo del sistema y ejecute el archivo JavaScript usandonode Como se muestra abajo.

C:\PouchDB_Examples >node Add_Attachment_to_doc.js

Esto agrega un archivo adjunto al documento especificado que muestra el siguiente mensaje.

Attachment added successfully

Si cambia el valor de id en read_doc.js a 002 y ejecutarlo, obtendrá el siguiente resultado.

{ 
   name: 'Raju',
   age: 23,
   designation: 'Designer',
   _attachments: { 
      att_1: { 
         content_type: 'text/plain',
         digest: 'md5-k7iFrf4NoInN9jSQT9WfcQ==',
         data: 'AA==' 
      } 
   },
   _id: '002',
   _rev: '2-3bb4891b954699bce28346723cc7a709' 
}

Agregar un archivo adjunto a un documento remoto

Incluso puede agregar un archivo adjunto al documento existente en una 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 si selecciona la base de datos llamada my_database, puede ver su contenido como se muestra a continuación.

A continuación se muestra un ejemplo de cómo agregar un archivo adjunto al documento 001 almacenado en una base de datos llamada 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');

//Adding attachment to existing document
var my_attachment = new Buffer (['Welcome to tutorialspoint'], {type: 'text/plain'});

rev = '1-36c34fdcf29a652876219065f9681602';
db.putAttachment('001', 'att_1.txt',rev, my_attachment, 'text/plain', function(err, res) {
   if (err) {
      return console.log(err);
   } else {
      console.log (res+ "Attachment added successfully")
   }
});

Guarde el código anterior en un archivo con el nombre Remote_Add_Attachment.js. Abra el símbolo del sistema y ejecute el archivo JavaScript usandonode Como se muestra abajo.

C:\PouchDB_Examples >node Remote_Add_Attachment.js

Esto agrega un archivo adjunto al documento especificado que muestra el siguiente mensaje.

Attachment added successfully

Ahora, si verifica el documento, puede observar el archivo adjunto agregado como se muestra en la siguiente captura de pantalla.