У меня есть две схемы, одна для пользователя и один для системы дружбы (следовать системе)Ошибка: не удается установить заголовок после отправки
module.exports = mongoose.model('User', {
email: {
type: String,
unique: true,
lowercase: true
},
password:String,
profile: {
fullname: String,
gender: String,
role: {type: String, default: 'Autorizado'},
country: String },
});
и это для друга системы
module.exports = mongoose.model('Friendship', {
follower: String,
followed: String
});
Я использую паспорт для авторизации моих пользователей ... проблема в том, что я хочу, чтобы я загружал информацию пользователя и информацию друга, связанную с пользователем, глобально, используя res.locals. Я делаю это, используя 2 функции в пути входа в систему ... .
router.post('/login', userController.postLogin,friendController.getFollow);
это моя postlogin функция
exports.postLogin = function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) return next(err);
if (!user) {
req.flash('errors', { msg: info.message });
return res.redirect('/login');
}
req.logIn(user, function(err) {
if (err) return next(err);
req.flash('success', { msg: 'Success! You are logged in.' });
res.redirect('/');
});
})
(req, res, next);
};
Когда я пытаюсь выполнить этот код все идет нормально, но когда я войти я получаю ошибку заголовка, пожалуйста, как я могу решить этот или другой способ, чтобы получить пользователь и следить за информацией и использовать ее во всех представлениях ?.
EDIT 3: работает только в следующих двух видах
Одна страница пользователя
<%= info.profile.fullname %>
<br>
<%= info.email %>
<br>
<%= info.profile.country %>
<br>
<%= user.follow %>
<br>
<% if(user && (user._id != info.id)){ %>
<br>
<form action="/follow/<%= info._id %>" method="post">
<button type="submit">Follow</button></form>
<%}%>
<br>
<a href="/users">atras</a>
Список зарегистрированного пользователя
<%if (user) {%>
<h1>Hola <%= user.profile.fullname %> </h1>
<%}%>
<br>
<% users.forEach(function (user) {%>
<a href="https://stackoverflow.com/users/<%= user._id %>"><p><%= user.profile.fullname %></p></a>
<%});%>
<a href="/">Home</a>
Это мой индекс и в этом плане user.follow не работает
<%if (!user) {%>
<a href="/signup">sign up</a>
<br>
<a href="/login">login</a>
<%} else { %>
<h1>Hola <%= user.profile.fullname %> Eres lo Maximo</h1>
<a href="/profile">perfil</a>
<br>
<a href="/logout">Logout</a>
<br>
<%}%>
<br>
EDIT 4: новый deserializeUser конфигурации.
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
FF.find({ follower:id }, function(err, follow) {
user.follow = follow;
});
done(err, user);
});
});
EDIT 5: Это мой маршрут Код
router.get('/', function(req, res) {
res.render('index');
});
router.get('/login', userController.getLogin);
router.post('/login', userController.postLogin);
router.get('/logout', userController.logout);
router.get('/signup', userController.getSignup);
router.post('/signup', userController.postSignup);
router.get('/profile', passportConf.isAuthenticated, userController.getAccount);
router.post('/profile', passportConf.isAuthenticated, userController.postUpdateProfile);
мой друг, у меня есть один вопрос, я могу использовать user.follow в 2 представлениях, можете ли вы помочь мне с этой проблемой?. Я обновил код –
Конечно, если смогу.Задайте это как еще один вопрос и опишите его как можно подробнее. Отдельные независимые вопросы помогают другим пользователям и будущим посетителям. – laggingreflex
oh ok, я обновил это, позвольте мне создать еще один вопрос –