Así que estás desarrollando una aplicación y quieres almacenar tus archivos en Couchbase. A partir de ahora, Couchbase permite documentos de hasta 20 MB de tamaño, que es más grande de lo que piensas. ¿Por qué almacenar nuestros archivos en Couchbase en lugar de en el sistema de archivos? Tal vez no tienes mucho espacio de almacenamiento en el sistema de archivos de tu aplicación o mejor aún, tal vez te gustaría tomar ventaja de las características de replicación que Couchbase ofrece para que nunca estés en riesgo de perder tus preciosos datos.

Vamos a echar un vistazo a la aceptación de la carga de archivos, convirtiéndolos en cadenas base64, y luego almacenar las cadenas en Couchbase junto con los metadatos necesarios.

Configuración de Couchbase

Couchbase Server será nuestra base de datos NoSQL de elección aquí. Al ser una base de datos de documentos, almacenar objetos JavaScript tiene mucho sentido.

Si aún no dispone de una copia de Couchbase Server 4.1 o superior, diríjase a la dirección descargas y obtenga el binario que se ajuste a sus necesidades de plataforma (Mac, Linux, Windows).

Con Couchbase instalado necesitamos añadir algo que nos permita usar el lenguaje de consulta N1QL. Necesitamos añadir un índice primario. Esto se puede hacer utilizando el cliente Couchbase Query (CBQ).

En Mac, inicie CBQ ejecutando lo siguiente desde el Terminal:

En Microsoft Windows, se puede hacer lo mismo ejecutando lo siguiente:

Si nunca has utilizado CBQ, te parecerá mucho a la herramienta de línea de comandos MySQL o a SQLPlus de Oracle. Podemos ejecutar consultas con ella, entre otras cosas. La consulta que ejecutaremos creará un índice primario. Ejecuta lo siguiente:

Couchbase Server ya está listo para ser utilizado con nuestra aplicación Node.js.

Configuración de una aplicación Node.js básica

Gran parte de lo que vemos aquí procede de dos tutoriales diferentes que escribí sobre el tema. Una vez demostré cómo aceptar carga de archivos en Node.js a través de una aplicación Angular 2así como cómo convertir esos archivos en datos base64. Esta vez sólo vamos a insertar los datos base64 en Couchbase Server.

Primero vamos a crear un nuevo proyecto Node.js. No tendrá un front-end, pero puedes crear el tuyo propio o usar una herramienta como Postman para hacer pruebas. Tu proyecto debería tener los siguientes archivos y directorios:

Utilizando un Terminal (Mac y Linux) o un símbolo del sistema (Windows), ejecute lo siguiente desde el directorio del proyecto:

El comando anterior creará un nuevo paquete.json archivo. Ahora necesitamos instalar las dependencias de nuestro proyecto. Esto se puede hacer ejecutando lo siguiente desde el símbolo del sistema o Terminal:

Ahora podemos empezar a desarrollar nuestra pequeña aplicación Node.js. Vamos a mantenerla muy simple. En el config.json incluye la siguiente información sobre nuestro nodo Couchbase:

Esto nos evitará tener que codificar la información de nuestro servidor a lo largo del proyecto.

Ahora queremos rellenar nuestro archivo lógico central de Node.js, el archivo app.js archivo. Siga adelante y añada el siguiente código:

You're realmente atrapado hasta donde lo dejé en mi Tutorial de conversión a base64 de Node.js. El caso es que ahora queremos almacenar esos datos en Couchbase Server.

Inserción de datos de archivos en Couchbase mediante consultas N1QL

Empecemos por incluir la información sobre las distintas dependencias que hemos descargado en los pasos anteriores. En la parte superior del archivo app.js con las otras importaciones, incluya lo siguiente:

Estamos incluyendo Couchbase, el motor N1QL, la información de nuestro servidor, y la librería para generar valores únicos. Ahora, antes o encima del bloque de código para compartir recursos entre orígenes, añade la siguiente línea:

Como ya he dicho, no importa dónde lo pongas, pero esta línea se conectará a un clúster Couchbase y abrirá el bucket, ambos definidos en el archivo config.json archivo.

Ahora viene lo más jugoso.

Vamos a cambiar la función endpoint para que las subidas se guarden en Couchbase antes de devolver los datos al usuario. Sigue adelante y cambia la función endpoint para que se parezca a la siguiente:

Observe que ahora estamos creando un INSERTAR ¿declaración? Se trata de una consulta parametrizada para evitar cualquier tipo de ataque de inyección SQL. Los parámetros se definen en la propia consulta y son el valor de id único para la clave y la matriz de archivos que hemos creado. Sólo una vez que los datos han sido guardados serán devueltos al usuario.

Conclusión

Sí, hubo un poco de manipulación aquí cuando se trata de la carga de archivos reales, pero eso es porque nos preocupamos más por la inserción en Couchbase. También porque fue explicado en mi tutorial anterior. Aquí vimos cómo hacer una consulta N1QL para insertar el array que contenía todos nuestros archivos base64 que fueron subidos. Mientras el tamaño de los archivos no exceda los límites de Couchbase, es una solución perfectamente aceptable y permitirá la replicación en caso de que esté habilitada.

Autor

Publicado por Nic Raboy, Defensor del Desarrollador, Couchbase

Nic Raboy es un defensor de las tecnologías modernas de desarrollo web y móvil. Tiene experiencia en Java, JavaScript, Golang y una variedad de frameworks como Angular, NativeScript y Apache Cordova. Nic escribe sobre sus experiencias de desarrollo relacionadas con hacer el desarrollo web y móvil más fácil de entender.

Dejar una respuesta