【问题标题】:Push not working inside firebase listener推送在 Firebase 侦听器中不起作用
【发布时间】:2018-10-30 22:23:51
【问题描述】:
var db=firebase.firestore();
var musicidarray=[];
var musicpaircontentarray=[];

//Retreive all music value pairs
db.collection("MusicIdNamePairs").get().then((querySnapshot) => {
    querySnapshot.forEach((doc) => {
        musicidarray.push(doc.id);
        musicpaircontentarray.push(doc);
        //alert(doc.get("Name"));
        //console.log(`${doc.id} => ${doc.data()}`);
    });
});
alert(musicidarray.length);//Suprisingly outputs length as zero even when the previou loop has run
for(var i=0;i<musicpaircontentarray.length;i++)
{
    alert(musicpaircontentarray[i].get("Name"));
}

这里的musicidarraymusicpaircontentarray(存储从 Cloud Firestore 获得的文档引用)显示长度为零,即使它在前一个代码块中的 foreach 循环内执行了推送操作。出了什么问题在这里。请帮助我。非常感谢您的帮助。

【问题讨论】:

    标签: javascript firebase google-cloud-firestore


    【解决方案1】:
    <script>
            var db=firebase.firestore();
            var musicidarray=[];
            var musicpaircontentarray=[];
    
            //Retreive all music value pairs
            db.collection("MusicIdNamePairs").get().then((querySnapshot) => {
                querySnapshot.forEach((doc) => {
                    musicidarray.push(doc.id);
                    musicpaircontentarray.push(doc);
                    //alert(doc.get("Name"));
                    //console.log(`${doc.id} => ${doc.data()}`);
                });
                displayarray();
            });
            function displayarray()
            {
                alert(musicidarray.length);
                for(var i=0;i<musicpaircontentarray.length;i++)
                {
                    alert(musicpaircontentarray[i].get("Name"));
                }
            }
        </script>
    

    据我了解,这里的问题是 array.length 甚至在从数据库中检索数据之前就被调用(即使内容在脚本中的循环之后并且看起来好像只在之后调用了长度循环执行)。而是在整个循环确保完成后调用显示数组方法,如解决方案。

    希望这是正确的方法。如果我在某处错了,请纠正我。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 2017-09-27
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多