Express res.locals 和哈巴狗没有按预期工作

Express res.locals and pug not working as expected

我的 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。当我使用 pug 模板中的 JSON.stringify({currentUser}) 时,它会输出 {}

登录时currentUserreturns一个字符串id,注销时currentUserreturns一个空对象。两者都通过 if{currentUser} 子句。

有人可以帮忙吗?

问题出在您的 if 签入 pug 模板:

if {currentUser} 将始终计算为真。当 currentUser 未定义时,您的 if {currentUser} 转换为 if({}),计算结果为 true

这是因为 {} 是一个 truthy 值。当 强制 Boolean 时,它的计算结果为 true.

if ({}) console.log('yes')

console.log(Boolean({}))

将其更改为 if currentUser(没有大括号)