Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

323
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda