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

101
Vistas
user.save() no parece guardar un campo específico que agrego al usuario

Si uso await user.save() en el código a continuación, parece atascarse, pero si lo uso sin esperar, parece avanzar y en la respuesta se muestra la passwordResetToken . Sin embargo, en la base de datos, por alguna razón, el el resto de los campos se guardan pero passwordResetToken simplemente no se guarda.

Estoy completamente perdido acerca de cuál podría ser el motivo. Cualquier dirección sobre lo que debo buscar ayudaría.

 exports.forgotPassword = async function(req, res, next) { // 1. Get user based on POST email const user = await User.findOne({ email: req.body.email }); // 2. Generate random token user.passwordResetToken = "123456"; await user.save({ validateBeforeSave: false }); // 3. Send it back as an email //4. Send Response res.status(200).json({ status: "success", data: { user: user, }, }); };

esta es la respuesta

 { "status": "success", "data": { "user": { "role": "user", "_id": "6116aeb70aae0f7c7d8800bc", "name": "Jane Doe", "email": "jane@doe.com", "__v": 0, "passwordResetToken": "123456" } } }

Sin embargo, el passwordResetToken todavía no lo guarda en la base de datos, aunque el resto sí. Tengo el passwordResetToken como un campo en mongoose.Schema

No había agregado esta sección a continuación a mi pregunta anterior, por lo que estoy agregando esto para ayudar a comprender dónde podría estar el problema.

Este es el modelo de usuario.js

 const userSchema = new mongoose.Schema({ name: { type: String, required: [true, "Name is required"], }, email: { type: String, required: [true, "Email is required"], validate: [validator.isEmail, "Please provide valid email"], unique: true, }, role: { type: String, enum: ["admin", "lead-guide", "guide", "user"], default: "user", }, photo: String, password: { type: String, minlength: 8, required: [true, "Password is required"], select: false, }, passwordConfirm: { type: String, validate: { validator: function(el) { return el === this.password; }, message: "Password confirmation does not match with Password. Please try again", }, }, passwordChangedAt: Date, passwordResetToken: String, passwordResetExpires: Date, });

y aquí está la línea de userRouter.js para esta ruta.

 router.route("/forgotPassword").post(authController.forgotPassword);
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Tal vez puedas probar con

 let user = await User.findOne({ email: req.body.email }); // 2. Generate random token user.passwordResetToken = "123456"; user = await user.save();

o puedes usar

 const user = await User.findOneAndUpdate({email:req.body.email},{$set:{passwordResetToken:'123456'},{new:true})

new: true devolverá datos actualizados.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Asegúrese de que el archivo del modelo contenga el campo passwordResetToken. De lo contrario, será ignorado.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Me pregunto si el problema es con la solicitud HTTP, es posible que desee tener una solicitud http.post no http.put para su pregunta publicada.

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