【问题标题】:EJS if condition never metEJS 如果条件从未满足
【发布时间】: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


【解决方案1】:

好的,所以我忘了在我的渲染中传递displayName 属性

在我添加:displayName: req.user ? req.user.displayName : "" 之后,现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 2018-08-24
    相关资源
    最近更新 更多