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

如何使用Mongoose与Node.js从MongoDB Atlas取数据并在EJS页面展示

解决步骤

默认你使用的是Express + EJS的技术栈,按下面两步修改即可:

  1. 修改后端查询逻辑,把查询到的数据传递给EJS模板
    你现在的代码仅把数据打印到控制台,需要替换为调用res.render传入数据:
// 对应路由的处理逻辑
app.get('/orders', function (req, res) {
  Shipment.find({}, function (err, shipments) { 
    if (err) throw err
    // 第一个参数是你要渲染的ejs文件名(不带后缀),第二个参数是传给模板的数据源
    res.render('orders', { shipments: shipments })
  })
})
  1. 修改orders.ejs的表格部分,用循环渲染数据
    你需要用EJS的语法遍历传入的shipments数组,逐行填充表格内容,嵌套的地址字段直接通过层级取值即可,同时我修复了原代码中div类名少闭合引号的小问题:
<div class="mt-5 m-auto"> 
  <h3 class="mt-5">This is the order table</h3> 
  <%- include ("./partials/messages"); %> 
  <div class="col-sm"> 
    <table class="table table-striped table-hover"> 
      <thead> 
        <tr> 
          <th>#</th> 
          <th>Customer</th> 
          <th>Address</th> 
          <th>City</th> 
          <th>State</th> 
          <th>Zip</th> 
          <th>Phone</th> 
          <th>Status</th> 
        </tr> 
      </thead> 
      <tbody>
        <% shipments.forEach(function(shipment, index){ %>
        <tr class="success">
          <!-- 数组索引从0开始,加1作为序号 -->
          <td><%= index + 1 %></td>
          <!-- 父级字段直接取值 -->
          <td><%= shipment.name %></td>
          <!-- 嵌套在address里的字段按层级取值 -->
          <td><%= shipment.address.address %></td>
          <td><%= shipment.address.city %></td>
          <td><%= shipment.address.state %></td>
          <td><%= shipment.address.zip %></td>
          <td><%= shipment.phone %></td>
          <!-- 你当前的集合结构里没有status字段,需要的话自行补全对应取值逻辑 -->
          <td></td>
        </tr>
        <% }) %>
      </tbody> 
    </table> 
  </div>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:18:03