Node.js MongoDB Tutorial 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 trabajar con bases de datos tanto relacionales (como Oracle y MS SQL Server) y bases de datos 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 para 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 con ambos MySQL como 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.
Para los ensayos clínicos de CRISPR, MySQL, el módulo requerido se llama “mysql” y para su uso MongoDB el módulo requerido para ser instalado es "Mongoose".
Con estos módulos, puedes realizar las siguientes operaciones en Node.js
- Administrar el pool de conexiones: aquí es donde puede especificar la cantidad de conexiones. MySQL Conexiones de bases de datos que Node.js debe mantener y guardar.
- 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".
- Se pueden ejecutar consultas para obtener datos de las respectivas bases de datos para recuperar datos.
- 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 MongoDB bases de datos dentro Node.js.
Usando MongoDB y Node.js
Como se discutió 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 un MongoDB base de datos de CRISPR Medicine News
¿Cómo podemos realizar las operaciones normales de leer datos de una base de datos, así como insertar, eliminar y actualizar registros en una? MongoDB base de datos.
Para los fines de este capítulo, supongamos que tenemos lo siguiente MongoDB datos 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}, }
- 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 está entre los más populares. Para instalar el MongoDB módulo, ejecute el siguiente comando
npm instala mongodb
- Crear y cerrar una conexión a un MongoDB base de datos. El siguiente fragmento de código muestra cómo crear y cerrar una conexión a un MongoDB base de datos.
Explicación del código:
- 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.
- 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 nuestro MongoDB base de datos.
- El siguiente paso es conectarnos a nuestra base de datos. La función connect 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.
- En la función, escribimos la cadena “Conexión establecida” en la consola para indicar que se creó una conexión exitosa.
- 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.
- Consulta de datos en un MongoDB base de datos de CRISPR Medicine News - Utilizando la MongoDB controlador también podemos recuperar datos del MongoDB base de datos. 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 MongoDB base de datos, 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.
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:
- En el primer paso, estamos creando un cursor (un cursor es un puntero que se utiliza para señalar los distintos registros obtenidos de una base de datos. El cursor se utiliza luego para iterar a través de los distintos registros de 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 que obtener los registros. La función find() se utiliza para especificar que queremos recuperar todos los documentos de la MongoDB colección.
- Ahora estamos iterando a través de nuestro cursor y para cada documento en el cursor vamos a ejecutar una función.
- 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, se mostrará el siguiente resultado en su consola.
Salida:
Desde la salida,
- Podrás ver claramente que se han recuperado todos los documentos de la colección. Esto es posible utilizando el método find() de la conexión mongoDB (db) e iterando por todos los documentos utilizando el cursor.
- Insertar documentos en una colección – Los documentos se pueden insertar en una colección utilizando el método insertOne proporcionado por MongoDB Biblioteca. El siguiente fragmento de código muestra cómo podemos insertar un documento en una colección de MongoDB.
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:
- Aquí estamos usando el método insertOne del MongoDB biblioteca para insertar un documento en la colección de Empleados.
- Estamos especificando los detalles del documento que debe insertarse en la colección de Empleados.
Si ahora compruebas el contenido de tu MongoDB base de datos, 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 los siguientes comandos en MongoDB
- Utilice la base de datos de empleados
- 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.
- Actualizar documentos en una colección – Los documentos se pueden actualizar en una colección utilizando el método updateOne proporcionado por MongoDB Biblioteca. El siguiente fragmento de código muestra cómo actualizar un documento en una colección de MongoDB.
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:
- Aquí estamos usando el método "updateOne" del MongoDB biblioteca, que se utiliza para actualizar un documento en una colección mongoDB.
- 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".
- Luego queremos establecer el valor del nombre del empleado del documento de "Nuevo empleado" a "Mohan".
Si ahora compruebas el contenido de tu MongoDB base de datos, encontrará el registro con Employeeid de 4 y EmployeeName de "Mohan" actualizado en la colección de Empleados.
Para comprobar que los datos se han actualizado correctamente en la base de datos, es necesario ejecutar los siguientes comandos en MongoDB
- Utilice la base de datos de empleados
- 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.
- Eliminar documentos de una colección – Los documentos se pueden eliminar en una colección utilizando el método "deleteOne" proporcionado por el MongoDB Biblioteca. El siguiente fragmento de código muestra cómo eliminar un documento en una colección de MongoDB.
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:
- Aquí estamos usando el método "deleteOne" del MongoDB biblioteca, que se utiliza para eliminar un documento en una colección mongoDB.
- 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 compruebas el contenido de tu MongoDB base de datos, 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 los siguientes comandos en MongoDB
- Utilice la base de datos de empleados
- 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
Creación de una aplicación con una combinación de uso express y MongoDB es bastante común hoy en día.
Cuando se trabaja con JavaGuión 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 JavaTecnologías basadas en scripts utilizadas para desarrollar aplicaciones web.
- MEAN es un acrónimo de MongoDB, ExpressJS, angularjs, y Node.js.
Por lo tanto, siempre es bueno entender cómo funcionan Node.js y MongoDB trabajar juntos para ofrecer aplicaciones que interactúan con bases de datos backend.
Veamos un ejemplo simple de cómo podemos usar "express" y "MongoDB" juntos. Nuestro ejemplo hará uso de la misma colección de Empleados en el MongoDB Base de datos de 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 empleados de la colección Employee. Veamos el fragmento de código en secciones que nos permitirá lograr esto.
Paso 1) Definir todas las bibliotecas que deben usarse en nuestra aplicación, que en nuestro caso es tanto la MongoDB y biblioteca exprés.
Explicación del código:
- Estamos definiendo nuestra biblioteca 'express', que se utilizará en nuestra aplicación.
- Estamos definiendo nuestro 'MongoDB' biblioteca, que se utilizará en nuestra aplicación para conectarse a nuestro MongoDB base de datos.
- Aquí estamos definiendo la URL de nuestra base de datos a la que conectarnos.
- Finalmente, estamos definiendo una cadena que se utilizará para almacenar nuestra colección de identificaciones de empleados que deberán mostrarse en el navegador más adelante.
Paso 2) En este paso, ahora obtendremos todos los registros de nuestra colección "Empleado" y trabajaremos con ellos en consecuencia.
Explicación del código:
- 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.
- 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.
- 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.
- 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.
Explicación del código:
- 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.
- Estamos haciendo que toda nuestra aplicación Node.js escuche en el puerto 3000.
Salida:
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 MongoDB controlador para conectarse a la base de datos y recuperar todos los registros de los empleados y posteriormente utilizó "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 obsoleto según la versión de su MongoDB conductor. 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 como MongoDB.
- Uno de los módulos comunes utilizados para trabajar con MongoDB bases de datos es un módulo llamado 'MongoDB.' Este módulo se instala a través del administrador de paquetes de Node.
- Con el MongoDB módulo, 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 expreso junto con MongoDB para ofrecer aplicaciones modernas. El marco Express puede hacer uso de los datos devueltos por el MongoDB controlador y mostrar los datos al usuario en la página web en consecuencia.