【问题标题】:How can I run an array of data through firebase?如何通过firebase运行一组数据?
【发布时间】:2017-07-17 02:29:48
【问题描述】:

我的数据结构如下

我创建了一个名为新数组的数组,其 ID 为 [19777873, 53399293]

var dbRef = firebase.database().ref().child('Agents').child(newarray[i]);

dbRef.on('value', snapshot => {
    firebase.auth().onAuthStateChanged((user) => {
        if (user) {
           database = firebase.database();
           console.log("Testing if the array values are here \n" + newarray);
            // var dbRef = firebase.database().ref().child('Agents').child(newarray[i]);
            dbRef.on('value', newAgents,  errData);
        }
     })
 }

新的代理功能

function newAgents(data) { 

    var container = document.getElementById("team"); 
    container.innerHTML = '';

    data.forEach(function(AgentSnap) { // loop over all jobs
        var key = AgentSnap.AgentID;
        console.log(AgentSnap.key);
        var Agents = AgentSnap.val();
        var AgentCard = `
                <div class= "profilepics" id="${key}">
                <figure ><img src=${Agents.profilepicurl}><figcaption>${Agents.Fname}</figcaption></figure>
                </div>
            `;

        container.innerHTML += AgentCard;
    })
}

我现在遇到的问题是图像(来自 {Agents.profilepicurl})正在显示,而名称(来自 {Agents.Fname})没有显示。它显示“未定义”而不是名称,并且控制台中没有显示错误。我做错了什么,我该如何解决?

【问题讨论】:

标签: javascript html arrays firebase


【解决方案1】:

在代码的前几行中发生了一些奇怪的事情。您正在设置“on”侦听器两次(忽略第一个侦听器的生成快照),并且您正在等待身份验证并设置数据库对象而不使用它。我不确定您要达到的目标,但这会奏效吗?这是我认为您正在尝试对当前代码执行的操作的简化版本:

console.log("Testing if the array values are here \n" + newarray);

firebase.auth().onAuthStateChanged((user) => {
    if (user) {
        document.getElementById("team").innerHTML = '';

        database = firebase.database();

        for (agentId of newarray) {
            var dbRef = database.ref().child('Agents').child(newarray[i]);
            dbRef.on('value', newAgents);
        }
    }
})

function newAgents(AgentSnap) { 
    var container = document.getElementById("team"); 

    var key = AgentSnap.AgentID;
    console.log(AgentSnap.key);
    var Agent = AgentSnap.val();
    var AgentCard = `
                <div class= "profilepics" id="${key}">
                <figure ><img src=${Agent.profilepicurl}><figcaption>${Agent.Fname}</figcaption></figure>
                </div>
            `;

        container.innerHTML += AgentCard;
    }

【讨论】:

  • 它正在使用 AuthId、Fname、Lname、电子邮件、语言、电话、profilepicurl、resumeUrls、AgentSnap.key。我想要的关键是 19777873, 53399293,..... 这如何实现?
猜你喜欢
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 2020-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多