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

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

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