javascript - Express res.locals 和 pug 没有按预期工作
问题描述
我的 app.js 中有以下功能,可以使用户 ID 可用于 pug 模板。
app.use(function (req, res, next) {
res.locals.currentUser = req.session.userId;
next();
});
登录后,我可以访问该 ID。但是,当我没有登录时,我的哈巴狗模板中的条件不起作用。这是我的哈巴狗模板中的代码
if {currentUser}
//do something
else
//do something else.
该else
部分不火。我已经记录了变量currentUser
,它是一个object
. 当我JSON.stringify({currentUser})
从哈巴狗模板使用它输出{}
登录时currentUser
返回字符串 id,注销时currentUser
返回空对象。两者都通过了该if{currentUser}
条款。
有人能帮忙吗?
解决方案
问题在于您if
签入哈巴狗模板:
if {currentUser}
将始终评估为真。您if {currentUser}
转换为if({})
whencurrentUser
未定义,其计算结果为true
这是因为{}
是一个truthy
值。当强制Boolean
它评估为true
.
if ({}) console.log('yes')
console.log(Boolean({}))
将其更改为if currentUser
(不带大括号)
推荐阅读
- java - 通过 setText 将文本设置为标签时,如何解决添加不需要的按钮和文本字段的问题?
- php - 如何在PHP中显示名字和姓氏的首字母
- swift - 多个可编码实现
- css - 线性渐变一般是如何完成的?css
- c# - “字符串未被识别为有效的日期时间。” 格式“yyyy-MM-dd”我如何使用这种格式
- javascript - Express:无法访问数字数组,即使它在请求正文中
- reactjs - Draft.js 中有什么方法可以检查是否正在使用样式?
- python - 如何使用 python 和 win32com Outlook 从“no-reply@mycompany.com”发送电子邮件
- html - 如何通过选取框标签在一行中显示多个移动文本而不是多行?
- javascript - 重复等待承诺功能,但第二次解决/返回失败