MongoDB为空时EJS(Express博客应用)占位符实现问题
嘿,我来帮你排查这个EJS的问题~
首先看你代码里的if条件,这就是问题根源:
<% if (typeof posts != undefined || posts.length >= 2) { %>
这里有两个关键错误:
typeof返回的是字符串类型,所以应该和"undefined"比较,而不是直接和undefined值对比;- 逻辑运算符和判断顺序错了——如果
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
相关产品推荐
相关产品推荐

