Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

317
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!