Express res.locals和pug无法正常工作

时间:2019-08-18 06:07:08

标签: javascript express pug

我的app.js中具有以下功能,以使用户ID可用于帕格模板。

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}子句。

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

问题出在您的if签入哈巴狗模板中:

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

这是因为{}是一个truthy值。 强制Boolean时,其结果为true

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

console.log(Boolean({}))

将其更改为if currentUser(不带花括号)