You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB为空时EJS(Express博客应用)占位符实现问题

嘿,我来帮你排查这个EJS的问题~

首先看你代码里的if条件,这就是问题根源:

<% if (typeof posts != undefined || posts.length >= 2) { %>

这里有两个关键错误:

  1. typeof返回的是字符串类型,所以应该和 "undefined" 比较,而不是直接和undefined值对比;
  2. 逻辑运算符和判断顺序错了——如果posts是undefined,直接访问posts.length会抛出错误,而且你想表达的应该是“当posts存在且长度≥2时展示文章”,所以得用&&而非||。

修正后的代码片段

<% if (typeof posts !== "undefined" && posts.length >= 2) { %>
  <% for (var i = posts.length - 1; i > posts.length - 3; i--) { %>
    <a class="post-link" href="/posts/<%= posts[i]._id %>">
      <div class="post-body">
        <div class="post">
          <!-- 你的文章内容模板 -->
        </div>
      </div>
    </a>
  <% } %>
<% } else { %>
  <!-- 无文章时的占位符内容 -->
  <div class="empty-posts">
    <h3>暂无博客文章</h3>
    <p>快来发布你的第一篇博客吧!</p>
  </div>
<% } %>

额外优化提示

如果你的后端会把posts默认设为空数组(而非undefined),还可以简化条件,直接用:

<% if (posts && posts.length >= 2) { %>

这种写法更简洁,也能避免posts为undefined时的报错问题。

内容的提问来源于stack exchange,提问作者Raph117

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:03:03