Вход в пользовательские и другие пользовательские переменные смешиваются в шаблоне Pug - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть базовое экспресс-приложение, где у меня есть макет мопса, а затем другие шаблоны мопса, расширяющие макет.

Моя проблема:

Когда включенна главной странице, на главной навигационной панели, я вижу фотографии пользователя, вошедшего в систему: CORRECT

Но когда я захожу, чтобы посмотреть профиль другого пользователя, я вижу фотографию на главной навигационной панели, как если бы они вошли в систему, INCORRECT

На моем layout.pug у меня есть это:

doctype html
html
  head
    title= `${title} | ${h.siteName}`

  body
    block header
      header.top
        nav.nav
            if user
              li.nav__item: a.nav__link.ph4(href="/logout", class=(currentPath.startsWith('/logout') ? 'nav__link--active' : ''))
                span Logout
              li.nav__item: a.nav__link.ph4(href="/account", class=(currentPath.startsWith('/account') ? 'nav__link--active' : ''))
                img.avatar.pa2(src=`/uploads/${user.photo}`)
            else
              li.nav__item: a.nav__link(href="/register", class=(currentPath.startsWith('/register') ? 'nav__link--active' : '')) Register
              li.nav__item: a.nav__link(href="/login", class=(currentPath.startsWith('/login') ? 'nav__link--active' : '')) Log In

    .content
      block content
        p This is the default!

    block scripts

Тогда у меня есть контроллер, которыйотправляет некоторого пользователя на основе его слага:

exports.getUserBySlug = async (req, res, next) => {

  const user = await User.findOne({ slug: req.params.slug })
  let embed = {}
  if (!user) return next();


  res.render('user', {
    user,
    title: user.name,
    embed: embed.html,
  });
};

А также конфигурацию в моем приложении, которая всегда предоставляет мне зарегистрированного пользователя, и я могу использовать его в pug как user

// pass variables to our templates + all requests
app.use((req, res, next) => {
  res.locals.h = helpers;
  res.locals.flashes = req.flash();
  res.locals.user = req.user || null;
  res.locals.currentPath = req.path;
  next();
});

Вопрос: Как я могу это сделать, чтобы на панели навигации всегда отображался зарегистрированный пользователь?

1 Ответ

0 голосов
/ 20 февраля 2019

Мне пришлось изменить эту строку:

res.locals.user = req.user || null;

на:

res.locals.loggedinUser = req.user || null;

и использовать loggedinUser на моем шаблоне

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...