如何用JavaScript获取Firebase实时数据库中propina字段的值并正常显示?
解决Firebase Realtime Database中propina字段显示
[object Object]的问题 问题原因
你的propina字段在Firebase数据库中是嵌套对象(包含自动生成的节点ID作为键),并非直接的字符串或数值类型。直接将对象与HTML字符串拼接时,JavaScript会把对象转换为默认的字符串表示[object Object],导致表格显示异常。
解决方案
需要先提取propina对象中的具体数值,再渲染到表格中。根据你的数据结构,有两种常见处理方式:
方式1:如果propina下有多个子节点(自动生成ID),遍历提取所有值
修改代码中处理propina的部分,通过Object.values()获取对象中的所有值,再拼接成可显示的内容:
var database = firebase.database(); database.ref().once('value', function(snapshot){ if(snapshot.exists()){ var content = ''; snapshot.forEach(function(data){ var val = data.val(); // 提取propina对象中的所有值,忽略自动生成的键 let propinaContent = ''; Object.values(val.propina).forEach(propinaVal => { propinaContent += `${propinaVal} `; // 多个值用空格分隔,可按需调整 }); content +='<tr>'; content += '<td>' + val.nombre + '</td>'; content += '<td>' + val.lugar + '</td>'; content += '<td>' + val.ubicacion + '</td>'; content += '<td>' + propinaContent.trim() + '</td>'; // 去除末尾空格 content += '</tr>'; }); $('#ex-table').append(content); } });
方式2:如果propina下只有一个子节点,直接取第一个值
如果每个propina对象只包含一个自动生成的键值对,可以直接取第一个值简化代码:
// 替换方式1中的propinaContent部分 let propinaContent = Object.values(val.propina)[0] || '';
特殊情况:如果propina有明确的子属性
如果propina对象有固定的子字段(比如monto),直接访问对应属性即可:
// 替换propinaContent部分 let propinaContent = val.propina.monto || '';
内容的提问来源于stack exchange,提问作者Maximiliano Bosich
相关产品推荐
相关产品推荐

