【发布时间】:2019-07-19 04:28:16
【问题描述】:
在我的 ejs 文件中,有一个 if 条件检查用户登录状态。
如果用户已登录,显示welcome + "displayName",然后退出按钮
如果用户未登录,则显示登录按钮。
<% if(typeof displayName == 'string' && displayName) { %>
<li class="navbar-text">
<i class="fa fa-user" aria-hidden="true"></i>
Welcome,
<%= displayName %>
</li>
<li class="nav-item">
<a href="/logout" class="nav-link">
<i class="fa fa-sign-out" aria-hidden="true"></i> Logout</a
>
</li>
<% } else { %>
<li class="nav-item">
<a href="/login" class="nav-link">
<i class="fa fa-sign-in" aria-hidden="true"></i></i>
Login</a>
</li>
<% } %>
问题是,我可以登录,但从不显示欢迎和注销按钮,它仍然保持“登录”状态。我必须在 url 栏中手动输入 /logout 才能注销。
我把我的 displayName 放在控制台日志中,登录后清楚地显示了它:
如您所见,它记录了我的 displayName,它是一个字符串。
谁能详细说明为什么 if 条件不起作用?
【问题讨论】:
-
请分享渲染模板的代码。您确定模板正在接收具有
displayName属性的对象吗? -
嗨@sdgluck,谢谢你的提示。如您所说,我忘记在我的
res.render中传递displayName 属性,现在问题已解决,谢谢。
标签: javascript node.js mongodb mongoose ejs