Estaba siguiendo un tutorial de Backend REST Api, y en el video, esto es lo que hizo, creando un objeto de usuario, luego cambiando newUser.password al hash generado.
// Data is valid, register user let newUser = new User({ name, username, password, email, }); // Hash password bcrypt.genSalt(10, (err, salt) => { bcrypt.hash(newUser.password, salt, (err, hash) => { if (err) throw err; newUser.password = hash; newUser.save().then(user => { return res.status(201).json({ success: true, msg: "User is now registered" }) }) }) })¿Por qué no hacerlo todo a la vez?
// Why not do it in one go instaed of creating and then changing User? bcrypt.genSalt(10, (err, salt) => { bcrypt.hash(password, salt, (err, hash) => { if (err) throw err; let newUser = new User({ name, username, hash, email, }); newUser.save().then(user => { return res.status(201).json({ success: true, msg: "User is now registered" }) }) }) })¿Hay algo malo en hacerlo juntos?
dado que bcrypt toma una función de devolución de llamada, su hash solo estará disponible entre los corchetes para la función de devolución de llamada, razón por la cual realiza la asignación entre esos corchetes. dado que declara newuser entre esos corchetes, newuser no está disponible en el alcance mayor