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

165
Vistas
MongooseError: la consulta ya se ejecutó:

Estoy tratando de actualizar el documento pero el error dice que la consulta ya se ejecutó.

MongooseError: la consulta ya se ejecutó: footballs.updateOne ({ fecha: '4 de enero'}, {})

 app.post('/api/bookslot', async (req, res) => { console.log(req.body); try { const token = req.headers['x-access-token']; const decoded = jwt.verify(token, 'secret123'); const email = decoded.email; const user = await UserModel.findOne({ email: email }); let sportname = req.body.selectedSport.toLowerCase(); const time = req.body.slotTime; const seats = req.body.availableSeats - 1; if (!sportname.endsWith('s')) { sportname = sportname.concat('s'); } const NewSlotModel = mongoose.model(sportname, slotSchema); var update = {}; update[time] = seats - 1; console.log(update); const a = await NewSlotModel.updateOne( { date: req.body.slotDate }, { $set: update }, function (err, success) { if (err) return handleError(err); } ); return res.json({ status: 'ok' }); } catch (e) { console.log(e); res.json({ status: 'error' }); } });

¿Dónde me estoy equivocando?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Está utilizando async/await y devoluciones de llamada en su código, lo que hace que mongoose arroje un error. El efecto real de usarlos a ambos es exactamente el tipo de error que está recibiendo:

La consulta ya fue ejecutada

Mongoose v6 no permite consultas duplicadas.

Mangosta ya no permite ejecutar el mismo objeto de consulta dos veces. Si lo hace, obtendrá un error de Consulta ya ejecutada. Ejecutar la misma instancia de consulta dos veces suele indicar que se mezclan devoluciones de llamada y promesas, pero si necesita ejecutar la misma consulta dos veces, puede llamar a Query#clone() para clonar la consulta y volver a ejecutarla. Ver gh-7398

Ejecución de consultas duplicadas

Para solucionar el problema, simplemente elimine el tercer argumento de la espera

NewSlotModel.updateOne

Haciendolo:

 const a = await NewSlotModel.updateOne( { date: req.body.slotDate }, { $set: update } );
about 4 years ago · Juan Pablo Isaza 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