Construyendo una App con Mongo(NoSQL)
Integreantes: Sergio Lizárraga
Docente: Ing. Patrick Jose Cuadros Quiroga
Para ello deberemos de tener una cuenta en https://www.mongodb.com/products/platform/atlas-database con un cluster ya creado con su BD y coleccion respectiva
Paso 1: Configuración de la Aplicación
Instalar Node.js para ello usaremos VisualStudio y usaremos el siguiente comando
npm init -y
Instalar Dependencias
Instala las dependencias necesarias para el proyecto:
npm install express mongoose dotenv
Crea un archivo .env
para almacenar tu cadena de conexión de MongoDB:
MONGO_URI=mongodb+srv://<username>:<password>@cluster0.mongodb.net/app_db?retryWrites=true&w=majority
PORT=3000
Paso 2: Cracion de la App
Usar la siguiente estructura:
APP/
├── .env
├── app.js
├── models/
│ └── Item.js
└── package.json
En el archivo models/Item.js
:
const mongoose = require('mongoose');
const itemSchema = new mongoose.Schema({
name: { type: String, required: true },
description: { type: String },
createdAt: { type: Date, default: Date.now },
});
module.exports = mongoose.model('Item', itemSchema);
En app.js
:
const express = require('express');
const mongoose = require('mongoose');
require('dotenv').config();
const app = express();
app.use(express.json());
// Conexión a MongoDB
mongoose
.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('Conectado a MongoDB Atlas'))
.catch((err) => console.error('Error de conexión', err));
const Item = require('./models/Item');
// Rutas
app.get('/', (req, res) => res.send('Bienvenido a la Aplicación'));
// Crear un Item
app.post('/items', async (req, res) => {
try {
const item = new Item(req.body);
await item.save();
res.status(201).json(item);
} catch (err) {
res.status(400).json({ error: err.message });
}
});
// Leer Items
app.get('/items', async (req, res) => {
try {
const items = await Item.find();
res.json(items);
} catch (err) {
res.status(500).json({ error: err.message });
}
});
// Actualizar un Item
app.put('/items/:id', async (req, res) => {
try {
const item = await Item.findByIdAndUpdate(req.params.id, req.body, { new: true });
res.json(item);
} catch (err) {
res.status(400).json({ error: err.message });
}
});
// Eliminar un Item
app.delete('/items/:id', async (req, res) => {
try {
await Item.findByIdAndDelete(req.params.id);
res.json({ message: 'Item eliminado' });
} catch (err) {
res.status(500).json({ error: err.message });
}
});
// Iniciar el Servidor
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Servidor corriendo en el puerto ${PORT}`));
Ahora solo queda iniciar el servidor:
node app.js