Estoy creando una aplicación de tareas pendientes y en la base de datos tengo un documento de empleado que contiene 2 matrices (todo y listo). Las tareas se almacenan aquí, y actualmente puedo agregar tareas a las matrices, pero tengo problemas para averiguar cómo hacer que mi API funcione para eliminarlas.
Así es como se ve mi documento de empleado
{"_id":{"$oid":"61797a3ed15ad09b88d167ab"},"empId":"1008","password":"password2","firstName":"test","lastName":"user","__v":5,"done":[],"todo":[{"_id":{"$oid":"61870bfe6ac33427b8406f7d"},"text":"testtask","id":"1"}]}Actualmente recibo errores cuando intento probar usando SoapUI, muchos similares a este "TypeError: Cannot read property 'findByIdAndDelete' of undefined" o Cannot DELETE /api/employees/1007/6184645df6bbd93340c0e390
Aquí está mi API de eliminación
* * Delete task */ router.delete("/:empId/tasks/:id", async (req, res) => { try { Employee.findByIdAndDelete( { _id: req.params.id }, function (err, employee) { if (err) { console.log(err); res.status(500).send({ message: "Internal server error: " + err.message, }); } else { console.log(employee); console.log( "Task with the id of" + req.params.id + " has been deleted successfully" ); res.json(employee); } } ); } catch (e) { console.log(e); res.status(500).send({ message: "Internal server error: " + e.message, }); } });Actualmente, puedo recibir mensajes en la consola que dicen que se eliminó, pero en realidad no se eliminó en la base de datos.
¡Bienvenido a stackoverflow! Debe usar updateOne con $pull. Probar:
Employee.updateOne({ empId: req.params.empId }, { $pull: { todo: { _id: req.params.id } } })Referencia: https://stackoverflow.com/a/27917378/9459826
Documentos de MongoDB:https://docs.mongodb.com/manual/reference/operator/update/pull/