litepath
Version:
Microframework ligero para Node.js
82 lines (66 loc) • 2.77 kB
JavaScript
// server.js (o index.js)
// Este es el archivo principal de tu microframework LitePath
// Aquí se configuran las rutas, middlewares y la conexión a MongoDB
const LitePath = require('./litepath'); // Importa tu microframework
const db = require('./db'); // Importa el módulo de conexión a MongoDB
const app = new LitePath(); // Crea la instancia de tu microframework
// ------------------------
// Middleware de logging
// ------------------------
// Este middleware se ejecuta en cada petición y muestra en consola
// el método HTTP y la ruta solicitada, junto con la fecha y hora
app.use((req, res, next) => {
console.log(`[${new Date().toISOString()}] ${req.method} ${req.path}`);
next(); // Permite continuar con el siguiente middleware o ruta
});
// ------------------------
// Rutas básicas
// ------------------------
// Ruta principal: retorna un mensaje simple
app.get('/', (req, res) => res.send('Hola mundo!'));
// Ruta de prueba de error: lanza un error intencional para testear middleware de errores
app.get('/error', (req, res) => {
throw new Error('Error de prueba');
});
// Ruta POST de prueba: devuelve lo recibido en formato JSON
app.post('/echo', (req, res) => {
res.json({ recibido: req.body });
});
// ------------------------
// Rutas con base de datos MongoDB
// ------------------------
// Ruta para obtener todos los usuarios desde la colección 'users'
app.get('/users', async (req, res) => {
try {
// Conecta a la base de datos y obtiene la colección 'users'
const database = await db.connect();
const users = await database.collection('users').find().toArray();
// Envía la lista de usuarios como respuesta JSON
res.json(users);
} catch (err) {
// Manejo de errores de base de datos
console.error('Error en /users:', err.message);
res.statusCode = 500;
res.json({ error: 'Error al consultar la base de datos' });
}
});
// ------------------------
// Archivos estáticos
// ------------------------
// Permite servir archivos estáticos desde la carpeta './public'
// Ejemplo: imágenes, CSS, JS, etc.
app.serveStatic('./public');
// ------------------------
// Middleware de manejo de errores
// ------------------------
// Captura cualquier error que ocurra en rutas o middlewares anteriores
app.use((err, req, res, next) => {
console.error('Middleware de error:', err.message);
res.statusCode = 500;
res.json({ error: '¡Ocurrió un error!' });
});
// ------------------------
// Inicialización del servidor
// ------------------------
// Inicia el servidor en el puerto 3000
app.listen(3000, () => console.log('Servidor en http://localhost:3000'));