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

121
Vistas
Actualización de datos y nueva relación de objetos: secuencia

Tengo esta función en mi ruta expresa que actualiza la información de un usuario y su función. El rol es otro objeto Sequelize y he establecido una relación de uno a muchos:

 User.belongsTo(Role); Role.hasMany(User);

En mi ruta, esta es mi función de actualización:

 const UpdateUser = async user => { if (Object.keys(user).length !== 0) { const { id, firstName, lastName, phone, email, role } = user; let modUser = await User.findOne({ where: { id }, include: [{ model: Role}] }); if (modUser.firstName !== firstName) modUser.firstName = firstName; if (modUser.lastName !== lastName) modUser.lastName = lastName; if (modUser.phone !== phone) modUser.phone = phone; if (modUser.email !== email && UniqueEmail(email)) modUser.email = email; if(modUser.Role.id !== role) { await modUser.setRole(await Role.findByPk(role)); } modUser.save(); modUser = await User.findOne( { where: { id }, include: [{ model: Role}], attributes: { exclude: ['RoleId', 'password'] } }, ); return modUser.reload(); } return { error: "No user found" }; }

La función funciona bien actualizando la información y el nuevo rol en la base de datos, el problema es que el usuario que regresa, a veces no tiene la información actualizada, sino la información anterior. No estoy seguro de si estoy implementando esto incorrectamente, o si intento actualizar el modelo de usuario y luego asignar un nuevo rol en ese momento está rompiendo algo.

¿Algunas ideas? ¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La mayoría de los métodos de secuenciación son asincrónicos... No estaba usando mis palabras clave de espera para permitir que el código asincrónico se resolviera antes de continuar.

 await modUser.reload(); await modUser.save();

Gracias a @Heiko TheiBen

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