Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

233
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda