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

NodeJS使用EJS渲染时userlist调用forEach报undefined但控制台有数据

问题根因
  • 后端数据取值错误:接口返回的响应体结构为外层包含data字段存储用户数组,不存在你代码中引用的results字段,导致传给EJS模板的userlist为undefined,调用forEach方法直接报错。
  • EJS模板循环逻辑错误:循环参数和原数组变量重名/不匹配,循环体内错误使用原数组变量取单个用户属性,即使接口取值正确也无法正常渲染数据。
修复代码

1. 后端路由代码修正

app.get('/process_form', function(req, res){
    axios.get('http://127.0.0.1:5000/api/getuser')
    .then((response)=>{
        // 修正取值路径,取response.data下的data字段获取用户数组
        var userlist = response.data.data;
        console.log(userlist);
        res.render('pages/letseat', {
            userlist: userlist
        });
    })
    // 新增错误捕获逻辑,避免接口请求失败导致页面崩溃
    .catch(err => {
        console.error('接口请求失败:', err);
        res.render('pages/letseat', { userlist: [] });
    })
});

2. EJS模板代码修正

<!-- 先判断userlist为有效数组再执行循环,兜底兼容异常场景 -->
<% if (userlist && Array.isArray(userlist)) { %>
    <% userlist.forEach(function(user) { %>
        <ul class="list-group list-group-numbered">
            <input type="checkbox" name="<%= user.firstname %>">
            <li class="list-group-item"><%= user.firstname %>, By: <%= user.lastname %></li>
        </ul>
    <% }); %>
<% } else { %>
    <p>暂无可用用户数据</p>
<% } %>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:06:04