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.