Hoy vamos a ampliar nuestro conocimiento de Node, aprendiendo MongoDB e implementando esta base de datos en un pequeño proyecto para que podamos aprender lo necesario para realizar una conexión.


Que es una base de datos NoSQL?

Tenemos que empezar por saber que es una base de dato NoSQL (Not only SQL), básicamente son bases de datos no relacionales, con pequeñas características que las definen como:

  • No solo manejan SQL como lenguaje de consulta
  • Los datos no se almacenan en tablas
  • No necesita de una esquema


Que es MongoDB?

Bueno ahora que tenemos más en claro que es una base de datos NoSQL podemos decir que MongoDB es un motor de base de datos NoSQL.
Fue desarrollado con el pensamiento de trabajar y manejar grandes cantidades de datos de una manera rápida y eficiente. Esto nos sirve mucho en aplicaciones a gran escala que necesitan consultar muchos datos en poco tiempo.

Una cosa importante a tener en cuenta es que MongoDB usa json para almacenar su información, por lo tanto si estamos acostumbrados a estos nos será sencillo trabajar con esta base de datos.

MongoDB poseen colecciones, que en el otro modelo (SQL) sería como las tablas, y dentro de estas tenemos documentos que son los objetos que queremos almacenar.
Como es sin esquema nuestras colecciones puede tener documentos diferentes uno de otro por ejemplo:

Coleccion : [
    {“nombre”: pepe, “edad”: 45},
    {“nombre”: ramon}
]

 

Muchos creen que en esta base de datos no existen las relaciones y eso no es del todo cierto, Mongo maneja un concepto llamado “nested-documents” que va a ser nuestra forma de relacionar 2 o más documentos, lo diferente con las bases de datos relacionales es que mientras ahí guardan un id de referencia, en esta vamos a guardar todo el objeto entero. Para verlo más claro, vamos con un ejemplo:

Imaginemos que tenemos 2 colecciones, una “Persona” y una “Direccion”, la relacion seria que una persona tiene una dirección, ahora veamos cómo se manejaría en Mongo esto.

Coleccion Persona : {
    “nombre” : “Pepe”,
    “edad” : 45,
    “direccion” : {
        “calle” : “Calle falsa”,
        “altura” : “123”
    }
}

Coleccion Direccion : {
    “calle” : “Calle falsa”,
    “altura” : “123”
}

 

Como podemos ver el documento dirección está contenido dentro del documento de esta persona, es así como las relaciones se manejan, y esto hace que el buscar datos de este tipo sea tan rápido ya que no tengo que estar armando relaciones entre distintos objetos, solo con consultar a “Persona” puedo obtener todo lo que necesito.

 

Mongo y Node

Falta explicar el porque estamos aca, ¿Como hago para usar mongo en mi proyecto con node? Esto es bastante simple gracias al módulo que nos brinda npm.
Lo primero como siempre, es establecer la conexión a la base. Esto lo logramos de la siguiente forma:

 

Los pasos son simples, importamos el módulo de MongoDB y creamos un cliente de mongo. También tendremos que crear una variable donde almacenaremos nuestra conexión a la base para que podamos recuperarla al momento de usarla.
Por ultimo pero no menos importante, definiremos una funcion constante que recibira un callback, esta lo único que ejecutará será el método “connect” del cliente de mongo, al cual deberemos informarle la url de conexión a la base.
El método connect nos devolverá una promise que en caso de que salga todo bien, nos devolverá un cliente conectado, a nosotros de este nos interesa el método db (que será lo que usemos para realizar peticiones la base. Y por último ejecutamos el callback y esto nos servirá para iniciar el servidor de node como se muestra a continuación.

 

Por último pero no menos importante, veamos cómo interactuamos con nuestra conexión en node.
En la siguiente imagen, hay un ejemplo de cómo se hace esto.


Lo primero que tenemos que hacer es importar nuestro método para obtener la conexión activa de Mongo, después en nuestra clase “Producto” vamos a tener un método guardar.
En el vamos a trabajar con la conexion, lo primero que hay que hacer es avisarle a Mongo que coleccion queremos acceder (en mi caso a la coleccion de productos), luego vamos a ejecutar el metodo “insertOne” (los metodos para interactuar con la base se pueden encontrar aquí) y le pasamos la propia clase a guardar, la ejecucion de este metodo nos deolvera una promise para informarnos si hubo un fallo o si la ejecuccion fue exitosa.
Y eso es todo lo que necesitamos saber para empezar a jugar con MongoDB y node, existen muchos metodos que nos serviran para realizar lo que queramos con la base, eso les queda a ustedes para seguir investigando y aprendiendo.

Mandanos tus sugerencias

Ayudanos con ideas para los artículos de este blog a contacto@somospnt.com

¡Seguínos en nuestras redes sociales para enterarte de los últimos posts!