Una de mis tecnologías preferidas para desarrollar aplicaciones web es Node.js. Hago mucho desarrollo en JavaScript, así que es otra pieza que encaja en mi puzzle de desarrollo. No hace mucho escribí una guía para usando Couchbase Mobile y el SDK de Couchbase Node.js en la misma pila. En ese artículo había mencionado que hay varias maneras diferentes de llevar a cabo esta tarea. Me imaginé que iba a elaborar en otra forma de hacer el trabajo, esta vez usando PouchDB.

PouchDB es una base de datos JavaScript que funciona en combinación con Couchbase Sync Gateway y Couchbase Server. Al ser JavaScript, puedes usarlo en tus aplicaciones basadas en servidor y navegador.

Requisitos

Dado que se trata de una aplicación JavaScript no habrá muchas dependencias de software. Las pocas que existen son las siguientes:

Esta es una aplicación Node.js, pero el Node Package Manager (NPM) es lo que hará la mayor parte del trabajo pesado cuando se trata de preparar nuestro proyecto. Obtendrá PouchDB y el resto de dependencias. Usaremos el Couchbase Sync Gateway base de datos en memoria porque esto es sólo una aplicación de ejemplo. En producción, querrás conectar Sync Gateway a Couchbase Server para el almacenamiento persistente.

Configuración de Couchbase Sync Gateway para la sincronización de datos

Sync Gateway manejará todos nuestros datos remotos antes y después de que lleguen a Couchbase Server. Es nuestro servicio intermediario que orquestará los datos entre plataformas, dispositivos, etc. No es un requisito para construir aplicaciones Node.js que funcionen con Couchbase Server. Lo usamos porque también queremos soportar sincronización móvil, aunque no se demostrará en este ejemplo.

Con Couchbase Sync Gateway descargado e instalado, necesitamos establecer una configuración para cargar en tiempo de ejecución. Crea un archivo llamado sync-gateway-config.json e incluyen lo siguiente:

En el archivo de configuración básico anterior establecemos una base de datos llamada ejemplo que utiliza la opción de almacenamiento en memoria de Sync Gateway. No hay permisos específicos de lectura o escritura en esta configuración, lo que significa que todos los datos existirán en el mismo canal.

Debido a que estamos ejecutando Sync Gateway y nuestro ejemplo Node.js que pronto será creado en la misma máquina, pero diferentes puertos, tenemos que permitir el uso compartido de recursos de origen cruzado (CORS). Si no lo hacemos, terminaremos con errores relacionados con JavaScript. En la configuración anterior estamos diciendo que queremos permitir la comunicación desde http://localhost:3000, que es nuestra aplicación Node.js.

En este punto puede ejecutarse Sync Gateway. En un entorno de producción, el servidor en memoria morsa puede sustituirse por el nombre de host de un clúster de Couchbase Server concreto.

Desarrollo de la aplicación web Node.js

Para hacer las cosas fáciles de entender, vamos a crear una aplicación Node.js fresca y trabajar nuestro camino hacia arriba. Esto se puede hacer utilizando el gestor de paquetes de Node.

Desde el Símbolo del sistema o Terminal, ejecute lo siguiente:

El comando anterior creará un paquete.json que mantendrá todas las dependencias de nuestro proyecto. Con el archivo paquete.json en su lugar, vamos a obtener algunas dependencias:

El comando anterior instalará Express Framework, un paquete necesario para gestionar los datos del cuerpo de las peticiones, y PouchDB para gestionar los datos de nuestra aplicación.

Antes de empezar a escribir código, tenemos que crear un archivo llamado app.js que contendrá toda la lógica de nuestra aplicación.

Puesta en marcha de la API RESTful

Con el app.js creado, ábralo e incluya el siguiente código JavaScript:

Entonces, ¿qué está pasando en el código anterior? En primer lugar estamos importando las dependencias que fueron instaladas previamente y las estamos inicializando.

Debido a que esta es una aplicación del lado del servidor tenemos dos opciones cuando se trata de utilizar PouchDB. Podríamos crear una base de datos local en nuestro servidor de aplicaciones que se sincroniza con Sync Gateway o podemos conectarnos a la instancia de Sync Gateway directamente.

Lo anterior indica que vamos a conectarnos directamente a nuestro servidor Sync Gateway que se ejecuta localmente. Puede elegir la opción de sincronización si desea adoptar un enfoque diferente en el equilibrio de carga.

Vamos a construir una API RESTful que utiliza CRUD, pero por ahora tiene sentido definir cada uno de los puntos finales que deseamos utilizar en Express Framework.

Por último, definimos cómo queremos servir la aplicación:

Vamos a servir la aplicación en http://localhost:3000 y cuando el servidor arranque imprimiremos información relativa a PouchDB. Nos servirá para hacernos una idea sobre la conexión y los datos que existen.

Incluida la lógica de manipulación de datos de PouchDB

Con la aplicación arrancada, podemos empezar a aplicar la lógica de la aplicación a cada uno de los métodos del endpoint. Comenzando con el punto final de la lista, tenemos lo siguiente:

Cuando el endpoint es alcanzado, consultaremos todos los documentos e incluiremos las propiedades del documento en los resultados. Para omitir información que podría no sernos útil podemos mapear la respuesta antes de devolverla, de lo contrario podemos devolver un error.

En lugar de listar todos los documentos podemos querer obtener un único documento.

En el escenario anterior esperamos que se incluya un id de documento en la petición. Si el id existe intentaremos obtener un documento y devolvérselo al solicitante, de lo contrario devolveremos un error.

¿Y la creación de nuevos documentos?

Para crear documentos dentro de Couchbase, haríamos algo como lo siguiente:

En el código anterior esperamos un nombre y un apellido exista. Si esto es cierto, crearemos el documento usando todo el cuerpo de la entrada y devolveremos la respuesta. No tenemos que usar todo el cuerpo de la entrada, pero en este ejemplo sí. Tenga en cuenta que esto sólo creará un documento, no actualizará el documento. La actualización de los documentos utilizaría un poner en lugar de un método Correo electrónico: método.

La parte final de nuestra aplicación es el punto final para borrar datos.

Esperamos que se introduzca un identificador en la solicitud. Si este id existe, primero hacemos una búsqueda para asegurarnos de que el documento existe. Si el documento existe, podemos borrarlo. Todo esto se logra encadenando promesas JavaScript.

Probar el código fuente del proyecto terminado

Si quieres tener una idea más clara de cómo es esta aplicación, a continuación puedes ver el código completo.

Para ejecutar la aplicación debe ejecutar node app.js desde tu Terminal o Command Prompt y luego pulsa los endpoints de http://localhost:3000 desde cURL o la aplicación que prefieras.

Conclusión

Acabas de ver cómo incluir PouchDB en una aplicación web Node.js del lado del servidor donde PouchDB se comunica con una base de datos NoSQL Couchbase. Este fue uno de los muchos ejemplos diferentes de cómo puedes incluir móvil y servidor en la misma pila porque Sync Gateway está sentado en el medio. En una entrada anterior Escribí sobre el uso de la API RESTful de Sync Gateway en lugar de PouchDB. Ese ejemplo también demostró el uso móvil y de servidor con Couchbase.

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