Tengo un problema con mi función Eliminar, siempre elimina los últimos datos y no los datos deseados.
Aquí está mi función API - ELIMINAR:
Función para borrar los datos
app.delete("/api/theTasks/:id", (req, res) => { let taskToRemove = Items.find(p => p.id == parseInt(req.params.id)); let index = Items.indexOf(taskToRemove); Items.splice(index, 1); res.json(taskToRemove); });Problema:
undefined si no encuentra el elemento.-1-1 para splice , siempre eliminará el último elemento.Usar filtro de matriz,
app.delete("/api/theTasks/:id", (req, res) => { const result = Items.filter((p) => p.id === parseInt(req.params.id)); if (result.length === 0) res.status(404).json({ error: "Item not found" }); res.json(result); });Supongo que la tarea no se encuentra y index termina siendo -1 , por lo que terminas llamando:
Items.splice(-1, 1); que elimina el último elemento de Items .
Puede solucionar el problema comprobando si se encontró el elemento y solo eliminándolo si es cierto.
app.delete("/api/theTasks/:id", (req, res) => { let taskToRemove = Items.find(p => p.id == parseInt(req.params.id)); if (taskToRemove) { let index = Items.indexOf(taskToRemove); Items.splice(index, 1); res.json(taskToRemove); } else { res.status(404).json({ error: 'Item not found' }); } });obtener el índice es -1; debe verificarlo antes del empalme; o usar filtro