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

225
Vistas
Mongoose collection.update no actualiza el documento

Tengo un problema al usar la función de update de Mongoose. Básicamente, el documento que intento modificar no se actualiza.

Aquí está el código:

 const user = 'Joe Bloggs' const salt = await bcrypt.genSalt() const pwStr = 'simplepassword' const hashedPassword = await bcrypt.hash(pwStr, salt) User.update({user_name: user }, { $set: { password: hashedPassword }}, function(err, doc) { if (err) console.log('Error ', err); console.log('Updated Doc -> ', doc); // returns un-updated doc });

Como puede ver, no hay mucho que hacer. Lo único que pensé que podría estar causando un problema fueron las funciones de bcrypt , pero parecen estar funcionando y hashedPassword bien la sesión.

La devolución de llamada registra el documento, pero no está actualizado y cuando lo reviso en el shell de Mongo, de hecho no está actualizado.

Anteriormente probé findOneAndUpdate pero parece que ha quedado obsoleto.

Entonces, probé findOne , pero esto tampoco pudo actualizar el documento. Aquí está el código básico que usa save en el usuario encontrado en su lugar.

 User.findOne({user_name: user}).then(async function(user) { user.password = 'easypassword'; await user.save(); } });

Intenté usar la update en el shell usando la misma sintaxis { $set: {...}} y funciona.

Si alguien puede decirme por qué esta operación no funciona cuando intento hacerlo usando las funciones de Mongoose, se lo agradecería mucho. ¡Gracias por adelantado!

EDITAR

He probado el código sugerido a continuación:

 const res = await User.updateOne([filter], [query]);

Esto devuelve lo siguiente cuando se cierra la sesión de res :

 { acknowledged: false }

Esto aparece en la documentación de MongoDB para relacionarse con una configuración de "preocupación de escritura", pero no tengo idea de adónde ir desde allí.

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

0

update es lo que en realidad está en desuso .

findOneAndUpdate , al igual que otros métodos de actualización de mongoose , devuelve el objeto no actualizado de forma predeterminada. Establecer la opción new en true devolverá el documento actualizado.

Otra opción sería updateOne ;

 User.findOneAndUpdate( { user_name: user }, { $set: { password: hashedPassword } }, { new: true }, function (err, doc) { if (err) console.log("Error ", err); console.log("Updated Doc -> ", doc); } );
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