Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

242
Views
No se puede eliminar un solo elemento por ID de mongoDB en la aplicación nextjs

Estoy haciendo una aplicación de tareas pendientes en nextjs para practicar, y me está costando mucho eliminar todos de la base de datos usando la función deleteOne.

Aquí está la llamada desde el frente:

 async function deleteTodo(id) { await fetch(`/api/todos/${id}`, { method: "DELETE", }); setTodosList(todosList.filter((todo) => todo._id !== id)); }

y aquí está el manejo del método DELETE:

 async function handler(req, res) { let client; try { client = await connectDatabase(); } catch (error) { res .status(500) .json({ message: error.message || "Error connecting to MongoDB." }); return; } if (req.method === "DELETE") { const { id } = req.query; console.log(id); if (!id || id.trim() === "") { res .status(500) .json({ message: "A todo id was not sent with the request." }); client.close(); return; } try { let result; let allTodos; result = await deleteTodo("todos", id); allTodos = await getAllTodos("todos"); res.status(201).json({ message: `Todo ${id} successfully removed!`, todos: allTodos, }); } catch (error) { res .status(500) .json({ message: error.message || "Unable to delete todo." }); } } client.close(); }

y la función de ayuda deleteTodo llama:

 export async function deleteTodo(collection, id) { const client = await connectDatabase(); const db = client.db(); const result = await db.collection(collection).deleteOne({ _id: id }); return result; }

Puedo hacer que elimine el primer elemento en la matriz de todos si le paso a deleteOne un objeto vacío, pero cuando trato de especificar la identificación usando { _id: id } no se elimina.

¿Alguien puede ver lo que está sucediendo para causar esto? Gracias.

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Creo que su id pasada desde front-end tiene un tipo de string . Dado que _id tiene el tipo ObjectId, debe convertir la cadena de id en ObjectId.

Instalar:

 npm i bson

Importa en tu deleteTodo :

 import { ObjectId } from 'bson';

e intenta cambiar, en deleteTodo

 const result = await db.collection(collection).deleteOne({ _id: ObjectId(id) });
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!