Este proyecto desarrolla una aplicación basada en Node.js y MongoDB que permite realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en una base de datos de mobiliarios. Además, utilizamos MongoDB Compass para visualizar y administrar los datos de manera eficiente.
Las dependencias utilizadas en este proyecto son:
- express: Un framework minimalista para aplicaciones web en Node.js.
- morgan: Un middleware de registro de solicitudes HTTP.
- jsonwebtoken: Para la autenticación basada en tokens JWT.
- body-parser: Parsea los cuerpos de las solicitudes entrantes en un middleware antes de que los maneje su aplicación.
- cookie-parser: Parsea las cookies adjuntas a las solicitudes HTTP.
- mongoose: Una biblioteca de modelado de datos para MongoDB y Node.js.
- ejs: Biblioteca de motores de plantillas.
- method-override: Permite usar métodos HTTP como PUT o DELETE en lugares donde el cliente no los soporta nativamente.
- bcrypt: Biblioteca para hash de contraseñas.
Las dependencias de desarrollo instaladas son:
- standard: Un linter de JavaScript que utiliza la configuración de estilo de codificación estándar.
Antes de empezar, asegúrate de tener instalado Node.js y MongoDB en tu máquina. Si no los tienes, puedes descargarlos e instalarlos desde los siguientes enlaces:
Para visualizar y administrar los datos en tu base de datos MongoDB, utiliza MongoDB Compass.
-
Fork del Repositorio:
- Haz un fork de este repositorio en tu cuenta de GitHub.
-
Clonar el Repositorio:
- Clona el repositorio forkeado a tu máquina local.
git clone https://github.com/tu-usuario/nombre-del-repositorio.git
- Clona el repositorio forkeado a tu máquina local.
-
Instalar Dependencias:
- Navega al directorio del proyecto y ejecuta el siguiente comando para instalar las dependencias necesarias:
npm install
- Navega al directorio del proyecto y ejecuta el siguiente comando para instalar las dependencias necesarias:
-
Crea un archivo
.env
en la raíz del proyecto y agrega las siguientes variables de entorno:PORT=3008 MONGODB_URISTRING=mongodb+srv://tunombredeusuario:contraseña@nosqldatabase.xwwhxd3.mongodb.net/ DATABASE_NAME=nombre_de_la_base_de_datos COLLECTION_NAME_1=nombre_de_la_coleccion_1 COLLECTION_NAME_2=nombre_de_la_coleccion_2 SALT_ROUNDS=numero_de_salt_rounds SECRET_KEY=tu_clave_secreta
PORT
: El puerto en el que se ejecutará la aplicación.MONGODB_URISTRING
: La URI de conexión a tu base de datos MongoDB.DATABASE_NAME
: El nombre de la base de datos.COLLECTION_NAME_1
: El nombre de la colección 1.COLLECTION_NAME_2
: El nombre de la colección 2.SALT_ROUNDS
: Un número que representa las vueltas de salt para bcrypt.SECRET_KEY
: Una clave secreta para la firma de los tokens JWT.
"type": "module"
: Esto permite el uso de módulos ES en lugar de CommonJS."scripts"
: Define los comandos para iniciar el servidor."start": "node --watch app.js"
: Este comando inicia el servidor y lo reinicia automáticamente cuando hay cambios en el archivoapp.js
.
"eslintConfig"
: Configuración de ESLint."extends": "standard"
: Utiliza la configuración de standard para ESLint.
-
Inicia el servidor:
npm start
Esto iniciará la aplicación en el puerto especificado (por defecto, 3008). Puedes acceder a la aplicación en tu navegador en
http://localhost:3008
.
-
Obtener todos los productos
- Endpoint:
GET /productos
- Descripción: Obtiene todos los productos de la colección.
- Endpoint:
-
Obtener un producto por su ID
- Endpoint:
GET /productos/id/:id
- Descripción: Obtiene un producto por su ID.
- Endpoint:
-
Filtrar productos
- Endpoint:
GET /productos/nombre/:nombre
- Descripción: Filtra productos por nombre (búsqueda parcial).
- Endpoint:
-
Agregar un nuevo producto
- Endpoint:
POST /productos
- Descripción: Agrega un nuevo producto.
- Endpoint:
-
Modificar el precio de un producto
- Endpoint:
PATCH /productos/:id
- Descripción: Modifica el precio de un producto usando PATCH.
- Endpoint:
-
Modificar un producto completamente
- Endpoint:
PUT /productos/:id
- Descripción: Modifica un producto completamente usando PUT.
- Endpoint:
-
Borrar un producto
- Endpoint:
DELETE /productos/eliminar/:id
- Descripción: Elimina un producto usando DELETE.
- Endpoint:
-
Registrar un usuario
- Endpoint:
POST /registro
- Descripción: Registra a un nuevo usuario.
- Endpoint:
-
Login de usuario
- Endpoint:
POST /login
- Descripción: Logea a un usuario y devuelve un token JWT.
- Endpoint:
-
Verificar el Token JWT
- Middleware:
verifyToken
- Descripción: Verifica si el token JWT es válido.
- Middleware:
-
Rutas protegidas
- Endpoint:
GET /perfil
- Descripción: Muestra el perfil del usuario si el token es válido.
- Endpoint:
GET /usuarios
- Descripción: Muestra la lista de todos los usuarios registrados si el token es válido.
- Endpoint:
- /json: Carpeta que contiene los datasets JSON.
- /README.md: Archivo con la descripción del proyecto.
- /app.js: Archivo principal de la aplicación Node.js donde se define toda la lógica de rutas y la conexión a la base de datos.
- /database.js: Archivo para configurar la conexión a la base de datos MongoDB.
- /product.js: Archivo que contiene el esquema (schema) del producto y el esquema de usuario utilizando Mongoose. Además, incluye funciones para validar al usuario y validar las credenciales.
- views: Carpeta que contiene las vistas para el registro, login, perfil de usuario y 404.
Es una aplicación hecha con Node.js y Express que realiza un CRUD a una base de datos MongoDB, conectada a través de Mongoose. Además de las funcionalidades básicas del CRUD, incluye vistas y rutas para el registro y login de usuarios, con rutas protegidas para acceder al perfil de usuario y al listado de productos. Los usuarios pueden registrarse, iniciar sesión, ver productos y cerrar sesión.
Este proyecto fue creado por José Barone. Este es el link del trabajo en GitHub: