NodeJS + MongoDB

Escrito por Manuel Aguilar Rodriguez

1 de julio de 2019

¡Que hay con las base de datos no relacionales! y por que usar mongoDB. Las bases de datos NoSQL son orientadas al empleo de diversas estructuras de datos para acceder y administrar datos,algunos son orientados a documentos, gráficos, memoria y búsqueda.

Estas bases de datos están optimizados específicamente para aplicaciones que requieren grandes volúmenes de datos, baja latencia y modelos de datos flexibles, lo que se logra mediante la flexibilización de algunas de las restricciones de coherencia de datos en otras bases de datos.

Las bases de datos NoSQL se adaptan perfectamente a una gran mayoría de aplicaciones actuales orientadas a dispositivos móviles, aplicaciones web, entre otros, que requieren bases de datos flexibles, escalables, de alto rendimiento.

¡¿Por qué usar MongoDB?! MongoDB es la más representativa de las bases de datos conocidas como NoSQL, es orientada a documentos de tipo JSON y no registros, como sucede en las tablas de las bases de datos relacionales.

MongoDB guarda estructuras de datos BSON con un esquema dinámico, haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida. MongoDB es una base de datos adecuada para su uso en producción y con múltiples funcionalidades.

Ahora veremos un ejemplo de implementación usando nodeJS, para ello usaremos las siguientes herramientas:

Utilizaremos dos frameworks, express y mongodb, lo que nos permitirá administrar las conexiones a nuestro servidor y el otro nos permitirá realizar conexiones con un servicio de mongodb, iniciaremos el proyecto con el comando npm init y seguiremos los pasos donde crearemos el archivo app.js para administrar nuestro servidor

Posteriormente instalaremos los frameworks con

npm i express

npm i mongodb

Procederemos a escribir el código de nuestro servidor dentro del archivo app.js, donde instanciamos los frameworks a utilizar. Usamos express para definir el servidor que manejará las peticiones en el puerto 3000. Mientras que mongodb lo utilizaremos para la conexión a la base de datos de manera local que se encuentra habilitada en el puerto por defecto 27017. Y definimos una ruta para obtener una petición de get en la raíz

Ahora definiremos dos rutas más, una para insertar datos en nuestra base de mongo y la otra para leer los datos insertados. En la primera ruta (/insertar/:nombre) Mandaremos los datos a insertar como parámetro de la petición get, esto no es recomendable, sololamente es para ejemplificar el uso.

El dato enviado lo manipulamos con el objeto db y la colección corresponde a la base de datos específica donde almacenaremos nuestra información, usamos la instrucción insert para agregar nuestra información en formato tipo json y definimos una función de tipo flecha para manejar el error o éxito en nuestra inserción

La otra ruta a definir (/consultar) nos permitirá visualizar la información almacenada en nuestra base de datos, aquí usamos la función find() para obtener toda la información que se encuentre en la colección y toArray() para poder manipularlo como un arreglo

El código completo sería el siguiente:

const app = require(‘express’);
const mongoCliente = require(‘mongodb’).MongoClient;

const srvApp = app();

mongoCliente.connect(‘mongodb://localhost:27017’, (error, database) => {
if(error) return console.log(error);
db = database.db(‘prueba’);
console.log(“Conexión éxitosa a la base de datos”);
});

srvApp.listen(3000, function(){
console.log(“Servidor activo en el puerto 3000”);
});

srvApp.get(‘/’, function(req, res){
res.send(“ok”);
});

srvApp.get(‘/insertar/:nombre’, function(req, res){
db.collection(‘datos’).insert({nombre: req.params.nombre}, (error, resultado) => {
if(error)
{
console.log(error);
res.send(“Error al insertar”);
}
res.send(“Inserción exitosa”);
} );
});

srvApp.get(‘/consultar’, function(req, res){
db.collection(‘datos’).find().toArray( (error, datos) => {
if(error)
{
console.log(error);
res.send(“Error al consultar”);
}
res.send(datos);
});
});

Ya tenemos todo listo, ahora procederemos a correr la aplicación en la terminal con el comando node app.js

Procedemos a probar nuestras rutas para ello abrimos postman y probamos la siguiente ruta: localhost:3000/ usando la petición GET y dando click en Send

Ahora probaremos la inserción de un dato, usamos la ruta: localhost:3000/insertar/Juan

Insertamos otros datos y ahora vamos a consultar toda la información existente en la base de datos mediante la ruta localhost:3000/consultar

La consulta fue exitosa, como podemos observar el resultado se encuentra en formato JSON dentro de un arreglo el cual podemos manipular de manera sencilla.

Con este ejemplo podemos visualizar la flexibilidad y rápida implementación de mongodb con nodejs, y que las aplicaciones y uso de está base NoSQL son ilimitadas y con gran felixibilidad y escalabilidad. Si quieres saber mas acerca de el uso de mongodb y bases NoSQL puedes consultar la documentación oficial https://www.mongodb.com/, https://aws.amazon.com/es/nosql/ , https://www.npmjs.com/package/mongodb


NodeJS + MongoDB was originally published in 200 Response on Medium, where people are continuing the conversation by highlighting and responding to this story.