如果条件未满足,则EJS

时间:2019-02-25 17:39:36

标签: javascript node.js mongodb mongoose ejs

在我的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>
      <% } %>

问题是,我能够登录,但是从未显示欢迎和注销按钮,它仍然保留为“登录”。我必须在网址栏中手动输入/ logout才能注销。

我将displayName放在控制台日志中,该日志在登录后清楚地显示出来: enter image description here

如您所见,它记录了我的displayName,它是一个字符串。

任何人都可以详细说明if条件为何不起作用吗?

1 个答案:

答案 0 :(得分:0)

好,所以我忘记在渲染器中传递displayName属性

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