node.js - 登录用户和其他用户变量在 Pug 模板中混合
问题描述
我有一个基本的快递应用程序,其中有一个哈巴狗布局,然后是其他扩展布局的哈巴狗模板。
我的问题是:
在主页上,在主导航上,我可以看到登录用户的照片,这是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
然后我有一个控制器,它根据它的 slug 发送一些用户:
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();
});
问题:我该怎么做才能在导航栏上始终显示登录用户?
解决方案
我不得不改变这一行:
res.locals.user = req.user || null;
至:
res.locals.loggedinUser = req.user || null;
并在我的模板上使用 loggedinUser
推荐阅读
- vue.js - 在Vue中检查json中是否存在某些东西
- node.js - 如何通过 SSH 隧道将 MongoDB 服务器与 NodeJS 集群(多工)连接
- reactjs - 将html转换为图像并在react js中下载时无法使用样式
- scala - 在地图上部分过滤以获取密钥:Scala
- import - Neo4j 傻瓜导入工具
- python - 在没有屏幕管理器的情况下在 kivy 中切换课程
- excel - 使用连续和非连续数字序列打印
- sql - 我需要找到每个公司的最高薪水高于平均薪水的员工
- javascript - 为什么 new Array(3) == ",,"; 返回真
- amazon-web-services - 我们可以允许 codepipeline 仅将更新的文件存储到 S3 吗?