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

Firebase返回值在EJS模板中无法正常渲染问题咨询

问题根因

for...in遍历对象时,变量bill获取到的是对象的键名(字符串类型的key),而非你预期的账单数据对象,因此访问bill.id、bill.Phone等属性会返回undefined,导致字段无法正常渲染。

解决方案

方案1:直接调整EJS模板取值逻辑

在遍历中通过键名从ChildData中取出对应的账单对象即可:

<% for(var billKey in ChildData){ %>
    <% const bill = ChildData[billKey] %>
    <tr>
       <td><%= bill.id %></td>
       <td><%= bill.Phone %></td>
       <td><%= bill.Amount %></td> 
       <td><%= bill.Purchase_Date %></td>
       <td>View Details</td>
    </tr>
<% } %>

方案2(更推荐):服务端预处理数据为数组后再传给模板

Firebase的snapshot.val()默认返回键值对结构的对象,提前转成数组后模板遍历逻辑更清晰,也更符合列表渲染的常规写法:

  1. 修改Node.js服务端代码:
app.get("/viewbill", function(req,res){
    database.once("value", function (snapshot) {
        // 键值对转纯数据数组,加默认空对象避免空数据报错
        const billList = Object.values(snapshot.val() || {})
        res.render('viewbills', {ChildData: billList});    
    });
})
  1. 对应修改EJS模板,用forEach遍历数组:
<% ChildData.forEach(bill => { %>
    <tr>
       <td><%= bill.id %></td>
       <td><%= bill.Phone %></td>
       <td><%= bill.Amount %></td> 
       <td><%= bill.Purchase_Date %></td>
       <td>View Details</td>
    </tr>
<% }) %>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:45:01