Tutorial de Node.js MongoDB con ejemplos

La mayoría de las aplicaciones web modernas tienen algún tipo de sistema de almacenamiento de datos en el backend. Por ejemplo, si se toma el caso de una aplicación de compras web, datos como el precio de un artículo se almacenarían en la base de datos.

El marco Node js puede funcionar con bases de datos tanto relacionales (como Oracle y MS SQL Server) como no relacionales (como MongoDB). En este tutorial, veremos cómo podemos usar bases de datos desde aplicaciones de Node js.

Bases de datos Node.js y NoSQL

A lo largo de los años, las bases de datos NoSQL como MongoDB y For MySQL se han vuelto bastante populares como bases de datos para almacenar datos. La capacidad de estas bases de datos para almacenar cualquier tipo de contenido y particularmente en cualquier tipo de formato es lo que las hace tan famosas.

Node.js tiene la capacidad de trabajar tanto con MySQL como con MongoDB como bases de datos. Para utilizar cualquiera de estas bases de datos, debe descargar y utilizar los módulos necesarios mediante el administrador de paquetes de Node.

MySQL, el módulo requerido se llama "mysql" y para usar MongoDB el módulo requerido para instalar es "Mongoose".

Con estos módulos, puedes realizar lo siguientewing operaciones en Node.js

  1. Administrar la conexión pooling: aquí es donde puede especificar la cantidad de conexiones de bases de datos MySQL que Node.js debe mantener y guardar.
  2. Crear y cerrar una conexión a una base de datos. En cualquier caso, puede proporcionar una función de devolución de llamada que se puede llamar cada vez que se ejecutan los métodos de conexión "crear" y "cerrar".
  3. Se pueden ejecutar consultas para obtener datos de las respectivas bases de datos para recuperar datos.
  4. La manipulación de datos, como insertar, eliminar y actualizar datos, también se puede lograr con estos módulos.

Para los temas restantes, veremos cómo podemos trabajar con bases de datos MongoDB dentro Node.js.

Usando MongoDB y Node.js

Como se analizó en el tema anterior, MongoDB es una de las bases de datos más populares utilizadas junto con Node.js.

Durante este capítulo veremos

Cómo podemos establecer conexiones con una base de datos MongoDB

Cómo podemos realizar las operaciones normales de leer datos de una base de datos, así como insertar, eliminar y actualizar registros en una base de datos MongoDB.

Para los fines de este capítulo, supongamos que tenemos los siguientes datos de MongoDB en su lugar.

Nombre de la base de datos: EmployeeDB

Nombre de la colección: Empleado

Documents
{
	{Employeeid : 1, Employee Name : Guru99},
	{Employeeid : 2, Employee Name : Joe},
	{Employeeid : 3, Employee Name : Martin},
}
  1. Instalación de los módulos NPM

Necesita un controlador para acceder a Mongo desde una aplicación Node. Hay varios controladores Mongo disponibles, pero MongoDB se encuentra entre los más populares. Para instalar el módulo MongoDB, ejecute el siguiente comando

npm instalar mongodb

  1. Crear y cerrar una conexión a una base de datos MongoDB. El siguiente fragmento de código muestra cómo crear y cerrar una conexión a una base de datos MongoDB.

Usando MongoDB y Node.js

Explicación del código:

  1. El primer paso es incluir el módulo mongoose, lo cual se realiza mediante la función require. Una vez que este módulo esté implementado, podemos usar las funciones necesarias disponibles en este módulo para crear conexiones a la base de datos.
  2. A continuación, especificamos nuestra cadena de conexión a la base de datos. En la cadena de conexión, se pasan 3 valores clave.
  • El primero es 'mongodb' que especifica que nos estamos conectando a una base de datos mongoDB.
  • El siguiente es "localhost", lo que significa que nos estamos conectando a una base de datos en la máquina local.
  • El siguiente es 'EmployeeDB' que es el nombre de la base de datos definida en nuestra base de datos MongoDB.
  1. El siguiente paso es conectarse a nuestra base de datos. La función de conexión toma nuestra URL y tiene la posibilidad de especificar una función de devolución de llamada. Se llamará cuando se abra la conexión a la base de datos. Esto nos da la oportunidad de saber si la conexión a la base de datos fue exitosa o no.
  2. En la función, escribimos la cadena “Conexión establecida” en la consola para indicar que se creó una conexión exitosa.
  3. Finalmente, cerramos la conexión usando la declaración db.close.

Si el código anterior se ejecuta correctamente, la cadena "Conectado" se escribirá en la consola como se muestra a continuación.

Usando MongoDB y Node.js

  1. Consulta de datos en una base de datos MongoDB – Usando el controlador MongoDB también podemos recuperar datos de la base de datos MongoDB. La siguiente sección mostrará cómo podemos usar el controlador para recuperar todos los documentos de nuestra colección de Empleados. en nuestra base de datos EmployeeDB. Esta es la colección de nuestra base de datos MongoDB, que contiene todos los documentos relacionados con los empleados. Cada documento tiene una identificación de objeto, un nombre de empleado y una identificación de empleado para definir los valores del documento.

Usando MongoDB y Node.js

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url, function(err, db) {

    var cursor = db.collection('Employee').find();

    cursor.each(function(err, doc) {

        console.log(doc);

    });
});

Explicación del código:

  1. En el primer paso, estamos creando un cursor (un cursor es un puntero que se usa para señalar los distintos registros obtenidos de una base de datos. Luego, el cursor se usa para iterar a través de los diferentes registros en la base de datos. Aquí estamos definiendo un nombre de variable llamado cursor que se utilizará para almacenar el puntero a los registros obtenidos de la base de datos. ) que apunta a los registros que se obtienen de la colección MongoDb. También tenemos la posibilidad de especificar la colección "Empleado" de la cual recuperar los registros. La función find() se utiliza para especificar que queremos recuperar todos los documentos de la colección MongoDB.
  2. Ahora estamos iterando a través de nuestro cursor y para cada documento en el cursor vamos a ejecutar una función.
  3. Nuestra función simplemente va a imprimir el contenido de cada documento a la consola.

Nota: - También es posible recuperar un registro particular de una base de datos. Esto se puede hacer especificando la condición de búsqueda en la función find(). Por ejemplo, supongamos que si solo desea recuperar el registro que tiene el nombre del empleado como Guru99, entonces esta declaración se puede escribir de la siguiente manera

var cursor=db.collection('Employee').find({EmployeeName: "guru99"})

Si el código anterior se ejecuta correctamente, lo siguientewing La salida se mostrará en su consola.

Salida:

Usando MongoDB y Node.js

Desde la salida,

  • Podrás ver claramente que se recuperan todos los documentos de la colección. Esto es posible utilizando el método find() de la conexión mongoDB (db) e iterando a través de todos los documentos usando el cursor.
  1. Insertar documentos en una colección – Los documentos se pueden insertar en una colección utilizando el método insertOne proporcionado por la biblioteca MongoDB. El siguiente fragmento de código muestra cómo podemos insertar un documento en una colección de mongoDB.

Usando MongoDB y Node.js

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url, function(err, db) {

    db.collection('Employee').insertOne({
        Employeeid: 4,
        EmployeeName: "NewEmployee"
    });
}); 

Explicación del código:

  1. Aquí estamos usando el método insertOne de la biblioteca MongoDB para insertar un documento en la colección Empleado.
  2. Estamos especificando el documento details de lo que se debe insertar en la colección Empleado.

Si ahora verifica el contenido de su base de datos MongoDB, encontrará el registro con Employeeid de 4 y EmployeeName de "NewEmployee" insertado en la colección Employee.

Nota: La consola no mostrará ningún resultado porque el registro se está insertando en la base de datos y no se puede mostrar ningún resultado aquí.

Para comprobar que los datos se han insertado correctamente en la base de datos, es necesario ejecutar lo siguientewing comandos en mongodb

  1. Utilice la base de datos de empleados
  2. db.Empleado.find({Empleadoid:4})

La primera declaración garantiza que está conectado a la base de datos de EmployeeDb. La segunda declaración busca el registro que tiene la identificación de empleado 4.

  1. Actualizar documentos en una colección – Los documentos se pueden actualizar en una colección utilizando el método updateOne proporcionado por la biblioteca MongoDB. El siguiente fragmento de código muestra cómo actualizar un documento en una colección de mongoDB.

Usando MongoDB y Node.js

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url, function(err, db) {

    db.collection('Employee').updateOne({
        "EmployeeName": "NewEmployee"
    }, {
        $set: {
            "EmployeeName": "Mohan"
        }
    });
}); 

Explicación del código:

  1. Aquí estamos usando el método "updateOne" de la biblioteca MongoDB, que se usa para actualizar un documento en una colección de mongoDB.
  2. Estamos especificando los criterios de búsqueda de qué documento necesita ser actualizado. En nuestro caso, queremos encontrar el documento que tiene el Nombre de Empleado de "Nuevo Empleado".
  3. Luego queremos establecer el valor del nombre del empleado del documento de "Nuevo empleado" a "Mohan".

Si ahora verifica el contenido de su base de datos MongoDB, encontrará el registro con Employeeid de 4 y EmployeeName de "Mohan" actualizado en la colección Employee.

Para comprobar que los datos se han actualizado correctamente en la base de datos, es necesario ejecutar lo siguientewing comandos en mongodb

  1. Utilice la base de datos de empleados
  2. db.Empleado.find({Empleadoid:4})

La primera declaración garantiza que está conectado a la base de datos de EmployeeDb. La segunda declaración busca el registro que tiene la identificación de empleado 4.

  1. Eliminar documentos de una colección – Los documentos se pueden eliminar en una colección utilizando el método "deleteOne" proporcionado por la biblioteca MongoDB. El siguiente fragmento de código muestra cómo eliminar un documento en una colección de mongoDB.

Usando MongoDB y Node.js

var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url, function(err, db) {

    db.collection('Employee').deleteOne(

        {
            "EmployeeName": "Mohan"
        }

    );
}); 

Explicación del código:

  1. Aquí estamos usando el método "deleteOne" de la biblioteca MongoDB, que se usa para eliminar un documento en una colección de mongoDB.
  2. Estamos especificando los criterios de búsqueda de qué documento debe eliminarse. En nuestro caso, queremos encontrar el documento que tiene el nombre de empleado "Mohan" y eliminarlo.

Si ahora verifica el contenido de su base de datos MongoDB, encontrará el registro con Employeeid de 4 y EmployeeName de "Mohan" eliminado de la colección de empleados.

Para comprobar que los datos se han actualizado correctamente en la base de datos, es necesario ejecutar lo siguientewing comandos en mongodb

  1. Utilice la base de datos de empleados
  2. db.Empleado.find()

La primera declaración garantiza que está conectado a la base de datos de EmployeeDb. La segunda declaración busca y muestra todos los registros en la colección de empleados. Aquí podrás ver si el registro ha sido eliminado o no.

Cómo crear una aplicación Node Express con MongoDB para almacenar y servir contenido

Crear una aplicación con una combinación de uso express y MongoDB es bastante común hoy en día.

Cuando se trabaja con JavaScript aplicaciones basadas en web, normalmente se utilizará aquí el término pila MEAN.

  • El término pila MEAN se refiere a una colección de tecnologías basadas en JavaScript que se utilizan para desarrollar aplicaciones web.
  • MEAN es un acrónimo de MongoDB, ExpressJS, angularjs, y Node.js.

Por lo tanto, siempre es bueno comprender cómo trabajan juntos Node.js y MongoDB para ofrecer aplicaciones que interactúan con bases de datos backend.

Veamos un ejemplo sencillo de cómo podemos utilizar "express" y "MongoDB" juntos. Nuestro ejemplo utilizará la misma colección de empleados en la base de datos MongoDB EmployeeDB.

Ahora incorporaremos Express para mostrar los datos en nuestra página web cuando así lo solicite el usuario. Cuando nuestra aplicación se ejecuta en Node.js, es posible que sea necesario buscar la URL http://localhost:3000/Employeeid.

Cuando se inicia la página, se mostrarán todos los ID de empleado de la colección Empleado. Entonces, veamos el fragmento de código en secciones que nos permitirá lograr esto.

Paso 1) Defina todas las bibliotecas que deben usarse en nuestra aplicación, que en nuestro caso es tanto MongoDB como la biblioteca express.

Cree una aplicación Node Express con MongoDB

Explicación del código:

  1. Estamos definiendo nuestra biblioteca 'express', que se utilizará en nuestra aplicación.
  2. Estamos definiendo nuestra biblioteca 'MongoDB', que se utilizará en nuestra aplicación para conectarnos a nuestra base de datos MongoDB.
  3. Aquí estamos definiendo la URL de nuestra base de datos a la que conectarnos.
  4. Finalmente, estamos definiendo una cadena que se usará para almacenar nuestra colección de ID de empleado que deben mostrarse en el navegador. later en.

Paso 2) En este paso, ahora obtendremos todos los registros de nuestra colección "Empleado" y trabajaremos con ellos en consecuencia.

Cree una aplicación Node Express con MongoDB

Explicación del código:

  1. Estamos creando una ruta a nuestra aplicación llamada "Employeeid". Entonces, cada vez que alguien navega hacia http://localhost:3000/Employeeid de nuestra aplicación se ejecutará el fragmento de código definido para esta ruta.
  2. Aquí obtenemos todos los registros de nuestra colección 'Empleado' a través del comando db.collection('Employee').find(). Luego asignamos esta colección a una variable llamada cursor. Usando esta variable de cursor podremos navegar por todos los registros de la colección.
  3. Ahora estamos usando la función cursor.each() para navegar por todos los registros de nuestra colección. Para cada registro, definiremos un fragmento de código sobre qué hacer cuando se accede a cada registro.
  4. Finalmente, vemos que si el registro devuelto no es nulo, entonces estamos tomando al empleado mediante el comando "item.Employeeid". El resto del código es sólo para construir un código HTML adecuado que permitirá que nuestros resultados se muestren correctamente en el navegador.

Paso 3) En este paso, enviaremos nuestra salida a la página web y haremos que nuestra aplicación escuche en un puerto en particular.

Cree una aplicación Node Express con MongoDB

Explicación del código:

  1. Aquí enviamos todo el contenido que se creó en el paso anterior a nuestra página web. El parámetro ‘res’ nos permite enviar contenido a nuestra página web como respuesta.
  2. Estamos haciendo que toda nuestra aplicación Node.js escuche en el puerto 3000.

Salida:

Cree una aplicación Node Express con MongoDB

Desde la salida,

  • Muestra claramente que se recuperaron todos los ID de empleado de la colección Empleado. Esto se debe a que utilizamos el controlador MongoDB para conectarnos a la base de datos y recuperar todos los registros de los empleados y posteriormente utilizamos "express" para mostrar los registros.

Aquí está el código para su referencia.

var express = require('express');
var app = express();
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';
var str = "";

app.route('/Employeeid').get(function(req, res)

    {
        MongoClient.connect(url, function(err, db) {
            var cursor = db.collection('Employee').find();
            //noinspection JSDeprecatedSymbols
            cursor.each(function(err, item) {

                if (item != null) {
                    str = str + "   Employee id  " + item.Employeeid + "</br>";
                }
            });
            res.send(str);
            db.close();
        });
    });

var server = app.listen(3000, function() {}); 

Nota: cursor.each puede estar en desuso según la versión de su controlador MongoDB. Puede agregar //noinspection JSDeprecatedSymbols antes de cursor.each para evitar el problema. Alternativamente, puedes usar forEach. A continuación se muestra el código de muestra usando forEach

var express = require('express');
var app = express();
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';
var str = "";

app.route('/Employeeid').get(function(req, res) {
   MongoClient.connect(url, function(err, db) {
       var collection = db.collection('Employee');
       var cursor = collection.find({});
       str = "";
       cursor.forEach(function(item) {
           if (item != null) {
                    str = str + "    Employee id  " + item.Employeeid + "</br>";
                }
       }, function(err) {
           res.send(err);
           db.close();
          }
       );
   });
});
var server = app.listen(8080, function() {});

Resumen

  • Node.js se utiliza junto con NoSQL bases de datos para crear muchas aplicaciones web modernas. Algunas de las bases de datos comunes utilizadas son MySQL y MongoDB.
  • Uno de los módulos comunes utilizados para trabajar con bases de datos MongoDB es un módulo llamado "MongoDB". Este módulo se instala a través del administrador de paquetes de Node.
  • Con el módulo MongoDB, es posible consultar registros en una colección y realizar las operaciones normales de actualización, eliminación e inserción.
  • Finalmente, una de las prácticas modernas es utilizar el marco rápido junto con MongoDB para ofrecer aplicaciones modernas. El marco Express puede hacer uso de los datos devueltos por el controlador MongoDB y mostrarlos al usuario en la página web en consecuencia.