Mi código anterior se ejecuta sin errores, pero la nueva contraseña no se guarda.
He estado siguiendo los documentos de bcrypt, una publicación de blog y un video y creo que las tres fuentes diferentes han resultado en que me falta algo crítico. ¿Alguna idea de por qué no se guarda la nueva contraseña?
module.exports.submitNewPassword = async (req, res) => { const slidedHeaderToken = req.headers.referer.slice(-40); const artist = await Artist.find({ resetPasswordToken: slidedHeaderToken, resetPasswordExpires: { $gt: Date.now() } }); if (!artist) { console.log("Artist doesn't exist"); } else { const hashedPassword = async (pw) => { bcrypt.hash(req.body.password, 12) } hashedPassword() artist.password = hashedPassword; resetPasswordToken = null; resetPasswordExpires = null; console.log("Successfully resubmitted password"); res.redirect('login'); } }Debe llamar a la función await artist.save() después de configurar algunos campos
Cuando realiza un cambio en los datos mediante FindOne , debe save .
await yourVariable.save()artists es una matriz de todos los artistas que coinciden con los parámetros en la llamada a .find() . Si solo quiere encontrar uno, use .findOne() .
Luego, después de modificarlo, use .save() para guardarlo nuevamente en la base de datos.
module.exports.submitNewPassword = async (req, res) => { const slidedHeaderToken = req.headers.referer.slice(-40); const artist = await Artist.findOne({ resetPasswordToken: slidedHeaderToken, resetPasswordExpires: { $gt: Date.now() } }); if (!artist) { console.log("Artist doesn't exist"); } else { const hashedPassword = async (pw) => { bcrypt.hash(req.body.password, 12) } hashedPassword() artist.password = hashedPassword; await artist.save(); resetPasswordToken = null; resetPasswordExpires = null; console.log("Successfully resubmitted password"); res.redirect('login'); } }Vea el tutorial de Mangosta aquí .