Integre su aplicación Node.js con una base de datos MongoDB utilizando Mongoose.

Administrar datos en una base de datos MongoDB puede ser un desafío, especialmente cuando se trata de modelos de datos complejos. MongoDB es una base de datos sin esquema, lo que significa que los datos se pueden agregar sin seguir una estructura particular. Esta flexibilidad hace que MongoDB sea ideal para almacenar grandes cantidades de datos, pero también dificulta la gestión de datos.

Mongoose proporciona una solución basada en esquemas que ayuda a garantizar que los datos guardados en MongoDB sean coherentes y tengan el formato correcto. Con Mongoose, puede definir un esquema para sus modelos de datos, que especifica la estructura de los datos y las reglas sobre cómo deben formatearse esos datos. Aquí explorará cómo usar Mongoose en una aplicación Express.

Configuración de su entorno de desarrollo

Antes de usar Mongoose, debe instalarlo como una dependencia en su proyecto.

Puede instalar Mongoose ejecutando el siguiente comando:

instagram viewer
npm instalar mangosta

Después de instalar Mongoose en su proyecto, debe conectar su aplicación a MongoDB usando Mongoose.

Mongoose se conecta a una base de datos MongoDB usando el conectar método, que toma un MongoDB URI como argumento.

Aquí hay un ejemplo:

// índice.js
constante mangosta = requerir("mangosta")

mangosta.conectar("mongodb://127.0.0.1:27017/ejemplo", () =>
consola.registro("Conectado a la base de datos con éxito")
);

El bloque de código anterior se conecta a una instancia local de MongoDB y registra un mensaje de éxito cuando su aplicación se conecta con éxito a MongoDB.

Crear un modelo de mangosta

Un modelo Mongoose es una clase basada en esquemas en Mongoose que le permite interactuar con una colección MongoDB.

Un esquema Mongoose define la estructura de los documentos que puede almacenar en una colección MongoDB y proporciona una interfaz para crear, leer, actualizar y eliminar documentos en ese recopilación.

Cuando define un modelo Mongoose, define el esquema para los documentos en esa colección, incluidas las propiedades, sus tipos y cualquier validación.

Aquí hay un ejemplo de un modelo Mongoose para un Usuario recopilación:

constante mangosta = requerir("mangosta");

constante esquema de usuario = mangosta. Esquema({
nombre: {
tipo: Cadena,
requerido: [verdadero, "Se requiere el nombre"],
},
correo electrónico: {
tipo: Cadena,
requerido: verdadero,
},
edad: {
tipo: Número,
validar: {
validador: función (valor) {
devolver valor > 0;
},
mensaje: () =>"Por favor ingrese una edad válida",
},
},
});

constante Usuario = mangosta.modelo("Usuario", esquema de usuario);

módulo.exportaciones = Usuario;

El bloque de código anterior define un esquema Mongoose con tres propiedades: nombre, correo electrónico, y edad. Cada propiedad tiene un conjunto definido de reglas que debe seguir al asignar un valor a su campo específico. Aquí hay un desglose de las reglas:

  • nombre: El nombre propiedad es un cadena tipo marcado como requerido, lo que significa que debe asignar una cadena a este campo. Si deja el campo vacío o ingresa otro tipo de datos JavaScript, Mongoose arroja un error.
  • correo electrónico: El correo electrónico propiedad es un cadena tipo marcado como requerido. No tiene otras reglas de validación, pero en la práctica, debe validar si el correo electrónico es correcto. Puedes validar el correo electrónico. usando expresiones regulares o bibliotecas de terceros, como class-validator.
  • edad: El edad propiedad es un número escriba con una regla de validación personalizada que compruebe si el valor asignado al campo es mayor que cero. Si el valor no pasa la validación, Mongoose lanza un error con el mensaje Por favor ingrese una edad válida. Puede dejar este campo vacío ya que no está marcado como requerido.

Después de definir el esquema, el bloque de código crea un modelo Mongoose llamado Usuario usando mangosta.modelo() método. Este método toma dos argumentos: el nombre del modelo y el esquema a usar para los documentos.

Finalmente, el Usuario el modelo se exporta a otras partes de su aplicación.

Interactuando con MongoDB usando Mongoose

Con su aplicación conectada a una base de datos MongoDB y su modelo creado y accesible para otras partes de su aplicación, puede interactuar con su base de datos utilizando métodos proporcionados por Mongoose.

Para este tutorial, realizará Operaciones CRUD en una base de datos MongoDB.

Nota: asegúrese de importar su modelo Mongoose en cualquier módulo donde realizará las operaciones CRUD.

Por ejemplo:

// enrutador.js

constante Usuario = requerir("./modelo de usuario")

Crear un documento

Un documento es una instancia de un modelo. Hay varias formas de crear y guardar un documento en MongoDB usando Mongoose.

Primero, puede crear una instancia de la clase de su modelo y luego llamar al ahorrar método en él.

Por ejemplo:

//Creando un nuevo usuario
dejar usuario = nuevo Usuario({
nombre,
correo electrónico,
edad,
});

// Guardando el usuario en la base de datos
usuario
.ahorrar()
.entonces(() => {
consola.registro("Usuario creado con éxito");
})
.atrapar((error) => {
// manejar el error
});

El bloque de código anterior crea y guarda un nuevo Usuario documento a su base de datos MongoDB.

También puede guardar datos en su base de datos usando el crear método. El crear El método crea una instancia de su modelo y llama al ahorrar método en él. En otras palabras, combina las dos operaciones de la técnica mencionada anteriormente.

Por ejemplo:

User.create({ nombre, correo electrónico, edad }, (err, datos) => {
si (errar) tirarnuevoError("Error Interno del Servidor");

consola.registro(`Usuario creado con éxito: ${datos}`);
});

El bloque de código anterior crea un nuevo Usuario documento con las propiedades pasadas como argumento al crear método.

Alternativamente, puede guardar datos en su base de datos usando el insertarmuchos método. Aunque este método solo es ideal para guardar datos en lotes.

Por ejemplo:

Usuario.insertarMuchos(
[
{ nombre, correo electrónico, edad },
{ nombre_1, correo electrónico_1, edad_1 },
],
(err, resultado) => {
si (Error) {
// manejar el error
} demás {
//Enviar resultados
}
}
);

El bloque de código anterior crea dos nuevos documentos en el Usuario colección usando la matriz pasada como argumento a la insertarmuchos método.

Lectura de un documento

Puede acceder a todos los documentos guardados en su base de datos MongoDB usando Mongoose's encontrar método.

Por ejemplo:

Usuario.find({})
.entonces((datos) => {
consola.Dato de registro);
})
.atrapar((errar) => {
// manejar el error
});

El bloque de código anterior devolverá todos los documentos en el Usuario recopilación.

También puede encontrar todos los documentos que coincidan con una consulta en particular pasando una consulta al método de búsqueda.

Por ejemplo:

// encuentra todos los documentos donde la edad es al menos 18
Usuario.find({ edad: { $ gte: 18 } })
.entonces((datos) =>consola.Dato de registro))
.atrapar((error) =>consola.log (error));

El bloque de código anterior devolverá todos los documentos con un valor de edad superior a 18 en el Usuario recopilación.

Alternativamente, puede leer registros individuales usando el encontrar por Id y pasando un ID de documento como argumento o usando el Encuentra uno y pasando un filtro como argumento.

Por ejemplo:

//findById
Usuario.findById (id, (error, resultado) => {
si (resultado) consola.log (resultado);
si (error) consola.error (error)
});

//findOne
Usuario.findOne({ correo electrónico: "[email protected]" }).entonces((usuario) => {
si (!usuario) {
// manejar el error
}
//enviar respuesta
});

En el bloque de código anterior, el encontrar por Id El método devuelve el documento con el ID coincidente. El Encuentra uno método devuelve el primer documento que tiene el correo electrónico [email protected].

Actualización de un documento

Puede actualizar un documento en MongoDB con Mongoose usando el findByIdAndUpdate método. Este método toma una identificación y un objeto con los detalles actualizados.

Por ejemplo:

User.findByIdAndUpdate (id, req.body, (err, doc) => {
si (doc) {
//Enviar respuesta
}
si (Error) {
// manejar el error
}
});

El bloque de código anterior actualiza el documento que tiene una ID que coincide con la ID proporcionada con el objeto de actualización proporcionado (req.cuerpo).

Eliminación de un documento

Puede eliminar un documento en MongoDB con Mongoose usando el findByIdAndDelete método. Este método toma un ID como argumento y elimina el documento con el ID correspondiente.

Por ejemplo:

Usuario.findByIdAndDelete (id, (error, resultado) => {
si (resultado) {
//Manejar el resultado
}
si (error) {
//Manejar error
}
});

El bloque de código anterior elimina un documento con la ID dada de su base de datos MongoDB.

Uso de Mongoose en sus aplicaciones Express

Este artículo proporcionó una descripción general de cómo podría usar Mongoose en su aplicación express. Cubriendo cómo puede establecer una conexión a MongoDB, estructurar y validar los datos guardados en su base de datos MongoDB y realizar operaciones CRUD simples.

Al usar Mongoose en sus aplicaciones Express, puede simplificar y optimizar las interacciones entre su aplicación y una base de datos MongoDB.