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

321
Vistas
Cómo actualizar la sesión actual al actualizar una matriz con mongoose push. Usando express handlebars mongoose y node.js

Actualmente estoy tratando de crear una aplicación de redes sociales, donde solo puedes ver publicaciones de tus amigos y mensajes directos solo con amigos. Desafortunadamente, al agregar un amigo actualizando la base de datos con mongoose insertando un elemento en una matriz de amigos (que funciona perfectamente). cuando visito publicaciones o mensajes, los amigos no se han actualizado y requieren cerrar sesión y luego iniciar sesión nuevamente, lo que lo actualiza para que funcione exactamente como lo imaginé. ¿Tiene esto algo que ver con la forma en que se actualiza la matriz de amigos?

La matriz de actualización de amigos:

 const User = require("../models/user"); const FriendsController = { Update: (req, res) => { const requesterUserID = req.session.user._id const receiverUserID = req.params.userID User.findOne({ _id: receiverUserID }).then((user) => { user.friends.push(requesterUserID); user.save(() => { User.findOne({ _id: requesterUserID}).then(user2 => { user2.friends.push(receiverUserID) user2.save(() => { res.redirect(`/profile/${receiverUserID}`); }); }) }); }); } }; module.exports = FriendsController;

No puedo por mi vida entender lo que está pasando. Supongo que está relacionado con la sesión dado que funciona al actualizar la sesión al cerrar sesión y volver a iniciar sesión.

El controlador de sesión:

 const User = require("../models/user"); const bcrypt = require("bcryptjs"); const SessionsController = { New: (req, res) => { res.render("sessions/new", {}); }, Create: (req, res) => { const email = req.body.email; const password = req.body.password; User.findOne({ email: email }).then((user) => { if (user) { bcrypt.compare(password, user.password).then((result) => { if (result) { req.session.user = user; res.redirect("/posts"); } else { res.render("sessions/new", { signInError: true }); } }); } else { res.render("sessions/new", { signInError: true }); } }); }, Destroy: (req, res) => { console.log("logging out"); if (req.session.user && req.cookies.user_sid) { res.clearCookie("user_sid"); } res.redirect("/sessions/new"); }, }; module.exports = SessionsController;

borrar la cookie al cerrar la sesión:

 app.use((req, res, next) => { if (req.cookies.user_sid && !req.session.user) { res.clearCookie("user_sid"); } next(); });

Gracias de antemano por la ayuda.

over 4 years ago · Santiago Trujillo
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