Tutorial de Node.js MongoDB con ejemplos

Tabla de contenido:

Anonim

La mayoría de las aplicaciones web modernas tienen algún tipo de sistema de almacenamiento de datos en el backend. Por ejemplo, si 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 de Node js puede funcionar con bases de datos con bases de datos relacionales (como Oracle y MS SQL Server) y no relacionales (como MongoDB). En este tutorial, veremos cómo podemos usar bases de datos desde dentro de las aplicaciones de Node js.

En este tutorial, aprenderá:

  • Bases de datos Node.js y NoSQL
  • Usando MongoDB y Node.js
  • Cómo crear una aplicación node express con MongoDB para almacenar y entregar contenido

Bases de datos Node.js y NoSQL

A lo largo de los años, las bases de datos NoSQL como MongoDB y 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 hace que estas bases de datos sean tan famosas.

Node.js tiene la capacidad de trabajar con MySQL y 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 MySQL, el módulo requerido se llama "mysql" y para usar MongoDB, el módulo requerido para ser instalado es "Mongoose".

Con estos módulos, puede realizar las siguientes operaciones en Node.js

  1. Administre la agrupación de conexiones: aquí es donde puede especificar la cantidad de conexiones de base de datos MySQL que Node.js. debe mantener y guardar.
  2. Cree y cierre una conexión a una base de datos. En cualquier caso, puede proporcionar una función de devolución de llamada a la que se puede llamar siempre que se ejecuten 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 la inserción, eliminación y actualización de 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 de 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 que se utilizan 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 lectura de datos de una base de datos, así como insertar, eliminar y actualizar registros en una base de datos MongoDB.

Para el propósito 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 de nodo. 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.

Explicación del código:

  1. El primer paso es incluir el módulo mongoose, que se realiza a través de la función require. Una vez que este módulo está en su lugar, 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, hay 3 valores clave que se pasan.
  • 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 realmente 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, estamos escribiendo 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 instrucció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.

  1. Consulta de datos en una base de datos MongoDB : con el controlador MongoDB también podemos obtener datos de la base de datos MongoDB.

    La siguiente sección mostrará cómo podemos usar el controlador para obtener todos los documentos de nuestra colección de empleados en nuestra base de datos de EmployeeDB. Esta es la colección en 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.

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 apuntar a los diversos registros extraídos de una base de datos. El cursor luego 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 que se obtienen los registros. La función find () se usa 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 es simplemente imprimir el contenido de cada documento en 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, suponga que si solo desea obtener el registro que tiene el nombre del empleado como Guru99, 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 con éxito, la siguiente salida se mostrará en su consola.

Producción:

De la salida,

  • Podrá ver claramente que se recuperan todos los documentos de la colección. Esto es posible usando 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.

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 Employee.
  2. Estamos especificando los detalles del documento de lo que debe insertarse en la colección de empleados.

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 verificar que los datos se hayan insertado correctamente en la base de datos, debe ejecutar los siguientes comandos en MongoDB

  1. Utilice EmployeeDB
  2. db.Employee.find ({Employeeid: 4})

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

  1. Actualización de 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.

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 mongoDB.
  2. Estamos especificando los criterios de búsqueda de qué documento debe actualizarse. En nuestro caso, queremos encontrar el documento que tiene el EmployeeName de "NewEmployee".
  3. Luego queremos establecer el valor del EmployeeName del documento de "NewEmployee" 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 verificar que los datos se hayan actualizado correctamente en la base de datos, debe ejecutar los siguientes comandos en MongoDB

  1. Utilice EmployeeDB
  2. db.Employee.find ({Employeeid: 4})

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

  1. Eliminación de documentos en 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.

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 mongoDB.
  2. Estamos especificando los criterios de búsqueda de qué documento debe eliminarse. En nuestro caso, queremos encontrar el documento que tiene el EmployeeName de "Mohan" y eliminar este documento.

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 Employee.

Para verificar que los datos se hayan actualizado correctamente en la base de datos, debe ejecutar los siguientes comandos en MongoDB

  1. Utilice EmployeeDB
  2. db.Employee.find ()

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

Cómo crear una aplicación node express con MongoDB para almacenar y entregar contenido

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

Cuando se trabaja con aplicaciones basadas en web JavaScript, 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 Node.js y MongoDB trabajan juntos para entregar aplicaciones que interactúan con bases de datos back-end.

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

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

Cuando se inicia la página, se mostrarán todos los ID de empleado en la colección de Empleados. Entonces, veamos el fragmento de código en secciones que nos permitirán 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.

Explicación del código:

  1. Estamos definiendo nuestra biblioteca 'express', que se utilizará en nuestra aplicación.
  2. Estamos definiendo nuestra biblioteca 'express', que se utilizará en nuestra aplicación para conectarse a nuestra base de datos MongoDB.
  3. Aquí estamos definiendo la URL de nuestra base de datos a la que conectarse.
  4. Finalmente, estamos definiendo una cadena que se utilizará para almacenar nuestra colección de identificación de empleado que debe mostrarse en el navegador más adelante.

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

Explicación del código:

  1. Estamos creando una ruta a nuestra aplicación llamada 'Employeeid'. Entonces, siempre que alguien navegue a 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 ('Empleado'). Find (). Entonces estamos asignando 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, vamos a definir 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 solo 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:

  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.

Producción:

De la salida,

  • Muestra claramente que se recuperaron todos los ID de empleado en la colección de Empleado. Esto se debe a que usamos el controlador MongoDB para conectarnos a la base de datos y recuperar todos los registros de Empleados y posteriormente usamos "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 JSDeprecatedSymbolscursor.each(function(err, item) {if (item != null) {str = str + " Employee id " + item.Employeeid + "
";}});res.send(str);db.close();});});var server = app.listen(3000, function() {});

Nota: cursor.each puede estar obsoleto según la versión de su controlador MongoDB. Puede agregar // noinspection JSDeprecatedSymbols antes de cursor.each para eludir el problema. Alternativamente, puede 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 + "
";}}, function(err) {res.send(err);db.close();});});});var server = app.listen(8080, function() {});

Resumen

  • Node.js se utiliza junto con las bases de datos NoSQL para crear muchas aplicaciones web modernas. Algunas de las bases de datos más utilizadas son MySQL y MongoDB.
  • Uno de los módulos comunes que se utilizan 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 usar el marco express junto con MongoDB para entregar aplicaciones modernas. El marco Express puede hacer uso de los datos devueltos por el controlador MongoDB y mostrar los datos al usuario en la página web en consecuencia.