Introducción a Node.js, parte 12: Conexión con MongoDB

19 Ene

Si bien Node.js al igual que otras tecnologías como PHP, Ruby o Python, permite conectarse con múltiples bases de datos, en los últimos tiempos se ha optado por elegir MongoDB, un tipo de base de datos NoSQL.

Las bases de datos NoSQL, a diferencia de base de datos SQL, como MySQL u Oracle, presentan ciertas diferencias. Por empezar no utilizan el concepto de tablas, sino de documentos, además no son bases de datos relacionales. Estos documentos, al igual que las tablas/registros, tienen atributos que nos permitirán guardar valores con distintos tipos de datos, como String, Integer, Double, Boolean e incluso Array. En realidad cada documento tendrá un formato Json, lo cual nos permitirá adaptarlos perfectamente a nuestro proyecto Node.

Tal vez sientas un poco de confusión, y al principio MongoDB te pueda generar cierto rechazo. Pero como dije al principio de las publicaciones de Node.js, también lo aplico para MongoDB, te puede gustar o no, pero al menos no podrás negar que intentaste algo nuevo. Vale la pena intentarlo.

Instalando MongoDB

La instalación es muy fácil. Vamos a ir a la página oficial de MongoDB, a la sección de descargas:

http://www.mongodb.org/downloads

La instalación que yo mostraré a continuación está orientada a usuarios de Windows, porque es el sistema operativo que yo uso. Pero los que usen Unix o Mac, pueden consultar en la documentación que hay en esta misma página.

Bien, vamos a descargar el archivo comprimido. Una vez realizado esto, vamos a descomprimirlo y a renombrarlo como “mongodb”, y vamos a moverlo a nuestro disco duro. En mi caso, el disco C.

También a la misma altura de “mongodb” vamos a crear un directorio llamado “data”, y dentro de éste otra carpeta con el nombre “db”. Aquí se guardarán nuestras bases de datos.

C:\
   mongodb
   data
      db

Con esto ya es suficiente.

Iniciando el servicio de MongoDB

Siempre que necesitemos usar MongoDB, en uno de nuestros proyectos, en nuestra máquina, debemos tener el servicio iniciado, al igual que cualquier otra base de datos como MySQL. Para ello vamos a abrir la consola y vamos a entrar en mongodb -> bin. En mi caso:

cd C:\mongodb\bin

Aquí vamos a ejecutar el archivo mongod.exe.

mongod.exe

Listo, con esto ya es suficiente. Pero vamos a dejar esta consola abierta, ya que de cerrarla el servicio será apagado.

Para hacer consultas a esta base de datos, mediante una interfaz, podés abrir otra consola, entrar en la misma carpeta:

cd C:\mongodb\bin

Y ejecutar el archivo:

mongo.exe

(Sin d al final)

Ahora, también podés trabajar con un programa con una interfaz más amigable, en ese caso, si estás usando Windows, podés descargarte:

http://www.mongovue.com/

Sea como sea, lo importante es tener el servicio de mongoDB iniciado, ejecutando el archivo mongod.exe.

Conectando Node.js con MongoDB

Para realizar la conexión de un proyecto Node, a MongoDB, necesitamos instalar una dependencia llamada Mongoose, la cual nos permitirá no sólo conectarnos, sino que también nos proveerá de funciones, para trabajar en forma muy sencilla con las consultas, como insertar, mostrar, eliminar o listar.

Para ello vamos a crear un nuevo proyecto con Express, como venimos haciendo hace tiempo. Yo lo llamaré “conexion_mongodb”.

Una vez creado nuestro proyecto express, vamos a las dependencias, agregando mongoose:

Reemplazamos:

"dependencies": {
   "express": "3.4.7",
   "jade": "*"
}

Por:

"dependencies": {
   "express": "3.4.7",
   "jade": "*",
   "mongoose": "*"
}

Y ahora sí, vamos instalar nuestras dependencias, como siempre:

npm install

Ahora, antes de continuar, acordate de abrir dos consolas. Una para iniciar nuestro proyecto en Node y otra con el servicio iniciado como hicimos antes con:

mongod.exe

Ahora vamos a escribir las líneas para conectar nuestra aplicación a la base de datos. Vamos a editar el archivo app.js.

En primer lugar requerimos la librería de mongoose:

var mongoose = require('mongoose');

Este objeto nos permitirá conectarnos, mediante el método .connect():

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/primer_base', function(error){
   if(error){
      throw error; 
   }else{
      console.log('Conectado a MongoDB');
   }
});

Vamos a analizar el código:

En primer lugar el método .connect() recibe dos parámetros. El primer es la base de datos:

'mongodb://localhost/primer_base'

No es necesario tener previamente creada esa base, “primer_base”, ya que si no lo hicimos, la aplicación lo hará por nosotros, y si ya existe se conectará a la misma.

El segundo parámetro es de tipo callback, y recibirá un parámetro, que nos devolverá el error, si hubo alguno al intentar conectarse:

if(error){
   throw error; 
}else{
   console.log('Conectado a MongoDB');
}

Ahora sí, podemos volver a la consola, donde estamos parados en el proyecto de Node, y ejecutar:

node app.js

Si nos aparece el mensaje por pantalla: ‘Conectado a MongoDB’, la conexión ha sido exitosa, sino tendremos que ver qué error nos indica.

Bueno, con esto es suficiente. En la próxima publicación aprenderemos a crear nuestro primer sistema CRUD, desde cero.

Saludos!

Anterior: Introducción a Node.js, parte 11: Crear un chat con socket.io

Siguiente: Introducción a Node.js, parte 13: CRUD con Mongoose

Redes sociables