From 722e0603bca5a322b98e167ff4b6e4afd4c5bdd7 Mon Sep 17 00:00:00 2001 From: javdiaort <javdiaort@alum.us.es> Date: Tue, 18 Mar 2025 12:55:14 +0100 Subject: [PATCH] falta base de datos que las tareas se actualicen --- src/config.js | 12 ++++++------ src/index.js | 46 ++++++++++++++++++++++++++++++++++------------ src/taskModel.js | 22 ++++++++++++++++++++++ views/home.ejs | 13 +++++-------- 4 files changed, 67 insertions(+), 26 deletions(-) create mode 100644 src/taskModel.js diff --git a/src/config.js b/src/config.js index 8b630f9..903222d 100644 --- a/src/config.js +++ b/src/config.js @@ -4,13 +4,13 @@ const connect = mongoose.connect("mongodb://localhost:27017/Login") // check database connected or not //Create a schema -const loginSchema=new mongoose.Schema({ - name:{ - type:String, - required:true +const loginSchema = new mongoose.Schema({ + name: { + type: String, + required: true }, - password:{ - type:String, + password: { + type: String, required: true } }); diff --git a/src/index.js b/src/index.js index aa81c9a..8253509 100644 --- a/src/index.js +++ b/src/index.js @@ -3,7 +3,7 @@ const pasth = require('path'); const bcrypt = require('bcrypt'); const bcrypt2 = require('bcryptjs'); const collection=require("./config"); - +const Task = require('./taskModel'); // Asegúrate de requerir el modelo de Task const app = express(); const session = require("express-session"); const MongoStore = require("connect-mongo"); @@ -104,24 +104,46 @@ app.post("/login", async (req, res) => { // PARTE TODO LIST -app.get("/todo", async (req, res) => { - if (!req.session.userId) { - return res.redirect("/"); // Redirigir si no está logueado - } +app.get("/home", async (req, res) => { + try { + // Obtener todas las tareas del usuario + const tasks = await Task.find({ userId: req.session.userId }); - const user = await collection.findById(req.session.userId); - res.render("index", { tasks: user.tasks }); + // Renderizar la vista "home.ejs" con las tareas del usuario + res.render("home", { tasks: tasks }); + } catch (error) { + console.error("Error al obtener tareas:", error); + res.status(500).send("Error al obtener tareas"); + } }); + + //agregar tareas app.post("/add", async (req, res) => { - if (!req.session.userId) return res.redirect("/"); + try { + // Obtén el usuario de la base de datos usando el userId almacenado en la sesión + const user = await collection.findOne({ _id: req.session.userId }); - const user = await collection.findById(req.session.userId); - user.tasks.push({ text: req.body.task }); - await user.save(); + if (!user) { + return res.status(404).send("Usuario no encontrado"); + } - res.redirect("/todo"); + // Crear una nueva tarea + const newTask = new Task({ + text: req.body.task, + userId: req.session.userId // Asocia la tarea al usuario + }); + + // Guardar la nueva tarea en la base de datos + await newTask.save(); + + // Redirigir al usuario a la página de inicio con las tareas actualizadas + res.redirect("/home"); //CUIDADO + } catch (error) { + console.error("Error al agregar tarea:", error); + res.status(500).send("Error al agregar tarea"); + } }); //eliminar tareas diff --git a/src/taskModel.js b/src/taskModel.js new file mode 100644 index 0000000..c6764ba --- /dev/null +++ b/src/taskModel.js @@ -0,0 +1,22 @@ +const mongoose = require("mongoose"); + +const taskSchema = new mongoose.Schema({ + text: { + type: String, + required: true + }, + createdAt: { + type: Date, + default: Date.now + }, + userId: { + type: mongoose.Schema.Types.ObjectId, // Referencia al usuario + required: true, + ref: "users" // Esto indica que "userId" es una referencia a la colección "users" + } +}); + +// Crear el modelo de la colección "tasks" +const Task = mongoose.model("tasks", taskSchema); + +module.exports = Task; \ No newline at end of file diff --git a/views/home.ejs b/views/home.ejs index 9902e34..50098a8 100644 --- a/views/home.ejs +++ b/views/home.ejs @@ -3,29 +3,26 @@ <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Home Page</title> + <title>Tu Lista de Tareas</title> </head> <body> - <h1>Tu Lista de Tareas</h1> <% if (tasks && tasks.length > 0) { %> <ul> <% tasks.forEach(task => { %> - <li><%= task.text %></li> + <li><%= task.text %> - <%= task.createdAt.toLocaleString() %></li> <% }); %> </ul> <% } else { %> - <p>No tienes tareas aún.</p> + <p>No tienes tareas.</p> <% } %> - <form action="/add" method="POST"> <input type="text" name="task" placeholder="Nueva tarea" required> - <button type="submit">Agregar</button> + <button type="submit">Agregar tarea</button> </form> - <a href="/logout">Cerrar Sesión</a> - + <a href="/logout">Cerrar sesión</a> </body> </html> -- GitLab