Introducción
MongoDB es la base de datos NoSQL más popular. Almacena datos en colecciones. Los registros individuales de la colección se denominan documentos y tienen una estructura clave-valor similar a la de los datos JSON. MongoDB es la opción preferida por su rendimiento, flexibilidad y escalabilidad.
¿Qué es una mangosta?
Mongoose es una biblioteca de modelado de datos de objetos (ODM) basada en promesas para el framework Node.js. Mongoose simplifica la interacción con la base de datos MongoDB. Permite crear y modelar esquemas MongoDB, lo que evita la necesidad de escribir consultas o esquemas complejos. Mongoose permite modelar los datos que se almacenan en MongoDB.
Esta guía le ayudará a comprender cómo conectar MongoDB a Node.js usando Mongoose.
Requisito previo:
Para seguir esta guía, asegúrese de tener Node.js instalado en su computadora. MongoDB está instalado en su computadora o configurado en una cuenta en la nube de MongoDB Atlas. Conocimientos básicos sobre la creación de servidores Node.js. Postman está instalado. Configuración de un proyecto Node.js Mongoose. Para crear un proyecto Node.js Mongoose, vaya a la carpeta deseada y ejecute npm init -y. Luego, instale los siguientes paquetes: Express: para crear un servidor HTTP Node.js. Mongoose: un ODM para MongoDB en Node.js.
npm install mongoose --save
Cómo comunicarse con Mongoose y MongoDB en Node.js Para comunicarse con Mongoose mediante Mongoose, cree un archivo llamado db.js y configure la conexión de Mongoose de la siguiente manera:
Importar la biblioteca Mongoose:
const connectDB = async () => {
try {
const conn = await mongoose.connect(`mongodb://localhost:27017/test`, {
useNewUrlParser: true,
});
console.log(`MongoDB Connected: {conn.connection.host}`);
} catch (error) {
console.error(error.message);
process.exit(1);
}
}El MongoDB que se usa aquí se ejecuta localmente. Por lo tanto, Mongoose crea una conexión a [nombre de la base de datos]. Asegúrese de introducir la URI correcta que conecta con su instalación local de MongoDB o con MongoDB Atlas cloud.mongodb://localhost:27017test.
Finalmente, exporte la función connectDB:
module.exports = connectDB;Indica e importa el archivo db.js:
const express = require('express');
const connectDB = require('./db'); Agregue el middleware y el analizador Express:
// express
const app = express();
//body parser
app.use(express.json());Ejecute la función connectDB():
//connect to database
connectDB();Agregar la raíz del servidor:
// routes
// We will add these routes later in this guide.Ejecute el programa en el puerto local:
onst PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server running on port {PORT}`));Modelar un esquema usando Mongoose
Un modelo define un esquema de colección en una base de datos MongoDB. Cree un archivo model.js y un esquema de colección Mongoose como se indica a continuación:
const {
Schema,
model
} = require("mongoose");
const MySchema = new Schema({
name: {
type: String,
required: true,
maxlength: 50
},
createdAt: {
type: Date,
default: Date.now,
},
});
const TaskModel = model("test", MySchema)
module.exports = TaskModelAquí, creamos una función MySchema que ejecuta el método mongoose.Schema. Este método configura el esquema que Mongoose ejecuta en MongoDB. Para crear el esquema, agregue los archivos a su documento. En este caso, agregamos dos campos:
Un nombre: En el código anterior, este campo se crea como una cadena con una longitud máxima de cincuenta caracteres. El valor "Requerido" es verdadero para indicar que todos los documentos deben contener este campo.
Un campo createAt especifica la hora de creación del documento. El tipo de fecha de creación predeterminado es la fecha actual.
Agregue datos a la base de datos utilizando el esquema Mongoose:
Para agregar datos a la base de datos, cree un archivo controller.js.
Importar MySchema desde el archivo de modelo const Task = require('./model');
Añade una tarea al conjunto de tareas. Esto especifica la ruta POST.
exports.createTask = async (req, res) => {
try {
// get the task from the body
const taskData = await req.body;
//create a new task then save
await Task.create(taskData)
.then((createdTask) => {
if (!createdTask) return res.status(404)
.json({
success: false,
message: "Task creation failed",
error: "Unable get created task"
})
res.status(201)
.json({
success: true,
createdTask
})
})
.catch((error) => {
res.status(404)
.json({
success: false,
error: error.message
})
})
} catch (error) {
res.status(500)
.json({
success: false,
message: "Internal server error"
})
}
}Recuperar todas las tareas:
Añade este código al archivo controller.js. Esto especifica la ruta GET.
exports.createTask = async (req, res) => {
try {
// get the task from the body
const taskData = await req.body;
//create a new task then save
await Task.create(taskData)
.then((createdTask) => {
if (!createdTask) return res.status(404)
.json({
success: false,
message: "Task creation failed",
error: "Unable get created task"
})
res.status(201)
.json({
success: true,
createdTask
})
})
.catch((error) => {
res.status(404)
.json({
success: false,
error: error.message
})
})
} catch (error) {
res.status(500)
.json({
success: false,
message: "Internal server error"
})
}
}
exports.getTasks = async (req, res) => {
//get all the data in the model and return it as response
try {
Task.find()
.then((allTasks) => {
res.status(200)
.json({
success: true,
allTasks
})
})
.catch((error) => {
res.status(404)
.json({
success: false,
message: "Cant fined ",
error
})
})
} catch (error) {
res.status(500)
.json({
success: false,
message: "Internal server error",
error: error.message
})
}
}Crear ruta:
Cree una ruta para ejecutar los controladores mencionados. Cree un nuevo archivo llamado routes.js y agregue el siguiente código:
const router = require("express")
.Router()
const controller = require('./controller')
router
.post('/', controller.createTask)
.get('/', controller.getTasks)
module.exports = routerFinalmente, ejecute estas rutas dentro del archivo server.js.
const router = require('./routes')
app.use('/tasks', router)Para agregar una nueva tarea, envíe una solicitud POST utilizando Postman de la siguiente manera:
Para recuperar las tareas agregadas, envíe una solicitud GET utilizando Postman de la siguiente manera:
Puede ver las tareas agregadas accediendo a su base de datos MongoDB:












