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

305
Vistas
Hook en Mongoose funciona en PRE pero no funciona en POST

Usando ganchos Mongoose, necesito que si la propiedad llamada saldo sobresaliente tiene un valor de cero, el estado cambia automáticamente a falso.

Intentar hacer esto usando el enlace PRE de Mongoose funciona, pero solo volviendo a invocar la solicitud después de que el saldo pendiente ya era cero antes. Es por eso que he decidido utilizar el gancho POST para que una vez finalizada la configuración de saldo pendiente a cero, cambie la propiedad de estado a falso.

Este es el código que uso con PRE que funciona bien pero no es realmente viable para lo que necesito:

 SaleSchema.pre('findOneAndUpdate', async function() { const docToUpdate = await this.model.findOne(this.getQuery()) if (docToUpdate.outstandingBalance < 1) { this._update.status = false; } })

Así que decidí cambiar PRE a POST pero nunca funciona:

 SaleSchema.post('findOneAndUpdate', async function() { const docToUpdate = await this.model.findOne(this.getQuery()) if (docToUpdate.outstandingBalance < 1) { this._update.status = false; } })
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

'POST' significa que todo está listo, no hay ninguna acción después de eso (los datos ya están actualizados), debe guardarlos nuevamente después de configurar el estado para actualizar el estado.

PRE es correcto para su caso, solo cambie la condición: Verificación de datos actualizados en lugar de datos actuales

 SaleSchema.pre('findOneAndUpdate', async function() { const docToUpdate = await this.model.findOne(this.getQuery()) if (this._update.outstandingBalance < 1 || (!this._update.outstandingBalance && docToUpdate.outstandingBalance < 1)) { this._update.status = false; } })
about 4 years ago · Juan Pablo Isaza Denunciar

0

Esta fue la solución para poder establecer el estado en falso en función del valor de Saldo pendiente mediante el enlace Pre:

 SaleSchema.pre('findOneAndUpdate', function (next) { if(this._update.$set.outstandingBalance < 1) { this._update.status = false } next(); });

Muchas gracias a él por su ayuda ya que @hoangdv me guió para encontrar la solución.

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