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

EJS遍历MongoDB文章列表时无法显示标题的问题求助

解决EJS渲染文章标题列表为空的问题

问题现状

博客的文章列表页能生成与MongoDB中测试文章数量对应的列表项,但所有列表项的标题内容为空;直接输出article_list能看到包含正确标题的对象数组,说明数据已成功传递到前端,但模板取值逻辑有误。

问题原因

  1. EJS模板取值错误:你的forEach回调函数没有接收当前迭代的单个文章对象,而是直接访问数组article_list的title属性——数组本身不存在该属性,因此返回undefined,导致标题显示为空。
  2. 后端冗余代码:ArticleSchema中的author是字符串类型,而非引用其他集合的ObjectId,后端代码里的.populate("author")属于无效调用(populate仅对文档引用生效),会触发不必要的数据库查询。

解决方案

1. 修正EJS模板的循环逻辑

在forEach回调中添加参数接收单个文章对象,通过该对象获取标题:

<ul>
  <% article_list.forEach(function(article) { %>
  <li>Title: <%= article.title %></li>
  <% }); %>
</ul>

2. 移除后端的无效populate调用

优化后的后端代码:

exports.article_list = function (req, res, next) {
  Article.find({}, "title author")
    .sort({ title: 1 })
    .exec(function (err, list_articles) {
      if (err) {
        return next(err);
      }
      // 成功查询后渲染页面
      res.render("article_list", {
        title: "Article List",
        article_list: list_articles,
      });
    });
};

完成以上修改后,页面即可正确渲染每篇文章的标题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:42:38