Comenzando con NodeJs, Express y TypeScript – Parte 2

Buen día a todos, en esta entrada seguiremos con la pequeña serie de programación en Nodejs con express utilizando Typescript como compilador de Javascript. En esta entrada estaremos integrando en el ejemplo que estamos llevando la persistencia de datos utilizando Mongodb.

Si no has leído la parte 1, te dejo el enlace.

Para comenzar primero tenemos que estar al tanto con Mongodb, existe un instalador y no tiene ciencia la instalación. También necesitamos un cliente con una GUI amigable. Podemos usar Robomongo, fue la herramienta de administración que más me gusto, además no busqué muchas. Sigue estas instrucciones para tener Mongodb corriendo, ya que por default no corre como un servicio (mi costumbre de MySQL o SQL Server que siempre lo hagan). Una vez teniendo Mongodb corriendo, podrás usar Robomongo para jugar con el, pero continuemos.

Creando la base de datos en Mongodb

Primero crearemos con Robomongo una base de datos que se llamará Balusoft, para crear una usen su intuición de programador usando Robomongo :).

En Mongodb no existe las tablas ya que es una base de datos No-SQL, en lugar de ellos existen las Collections, y en ellos se guardan objetos usando notación JSON.

Crearemos una colección llamada customers y al hacerlo, si damos click derecho en la colección y damos View Documents veremos la colección obviamente vacía.

Ahí mismo podremos escribir una sentencia para hacer pruebas y comenzar a agregar objetos. Les aseguro que yo soy nuevo en Mongodb y no he estudiado mucho sobre el, así que si ustedes saben Mongodb y notan cosas que realmente no se deben de hacer así, el objetivo de esta entrada es conocer más sobre Typescript combinado con estas tecnologías.

En la imagen anterior estamos agregando un nuevo objeto a la colección, aquí se puede ingresar lo que se desee en las propiedades del objeto (notación JSON). Así podremos agregar los objetos que deseemos, hay que mantener esas tres propiedades, porque esas fueron las que usamos en el post anterior.

Utilizando el conector de Mongodb para Nodejs

Para utilizar el conector de Mongodb debemos de instalar un paquete con npm, pero con Visual Studio lo haremos de forma visual en lugar de la linea de comandos.

Y instalamos el siguiente paquete:

Pero el paquete que instalamos, es un paquete tradicional de Nodejs, necesitamos un mapeo de Javascript a Typescript si queremos que funcione las características de compilación, uso de clases, etc. Se podría usar el paquete como Javascript tradicional (como si usáramos Nodejs tradicionalmente) pero lo que haremos es incluir las definiciones de Typescript en nuestro proyecto.

Las definiciones las escribió alguien que al parecer se ve como un Ruso muy rudo, pero en su Github encontraremos muchas definiciones para typescript (pero muchas en verdad, 756 contribuidores).

Descargaremos este archivo y lo guardaremos en nuestro proyecto:

Teniendo las definiciones del paquete mongodb, ya podemos empezar a escribir código para conectarnos a la base de datos (porfin!).

Consultando los clientes en la capa de servicio

Primero crearemos una clase llamada database para tener métodos sencillos de crear conexiones. El archivo database.ts lo crearemos en la raíz del proyecto y es el siguiente (click en la imagen para verla grande):

Lo que escribimos aquí fue un simple init del conector y de una vez nos conectamos a la base de datos que nos interesa. El parámetro w, según la documentación nos da permisos de escritura en la base de datos.

En el post anterior escribimos una clase de servicio muy dummy que solo traía datos estáticos. Lo que vamos a hacer ahora es realmente consultar los datos que hay en la base de datos, la clase servicio quedará de la siguiente forma:

Ahora el servicio ya no trae datos estáticos de un arreglo, sino que realmente consulta la base de datos de Mongodb y los regresa en el método getCustomers por medio de un callback. En ese método, estamos accediendo a la colección customers que creamos arriba, y al igual que como se hace en robomongo usamos el método find() para consultar todos los objetos de la colección. Usando toArray convierte la colección encontrada en un arreglo común de javascript y lo regresamos en un callback que se está pidiendo como parámetro en el método. Una forma más explícita de hacer esto mismo podría ser así:

9

El parámetro callback es una método anónimo que se recibe como parámetro en getCustomers, a su vez este método anónimo no tiene tipo de dato de retorno, por eso void, igual getCustomers no tiene tipo de retorno (void) porque los datos se mandarán a través del callback.

Para hacer uso de este servicio de clientes, modificaremos nuestra ruta customers.ts de la siguiente manera:

10

ERROR garrafal mio, var customerList al llamar la función getCustomers no tiene nada de sentido, ya que ese mismo método no retorna nada. Se lo quitamos y será la forma correcta aunque no afectará a nada. Perdon 😦

Quedó muy parecido que el post anterior, pero ahora sí se consultan datos de una base de datos.

El resultado en la vista será exactamente el mismo, pero ahora con datos que persisten en una base de datos:

11

Y si vemos en mi base de datos tengo lo siguiente:

12

Con esto que hemos aprendido, podemos ver la documentación de Mongodb o jugar con Robomongo para buscar, crear, actualizar o eliminar objetos de nuestra colección o cualquier colección.

Espero y les haya gustado, que ami me ha estado gustando estas tecnologías, espero algún día desarrollar algo usando esto o simplemente seguir aprendiendo. Un saludo para todos!.

Repositorio en Github

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s