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

169
Views
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 answers
Answer question

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 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!