Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

226
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda