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"));
}
此处musicidarray
和musicpaircontentarray
(存储从Cloud Firestore获得的文档参考)显示的长度为零,即使它已在上一段代码中的foreach循环内执行了push操作。这里有什么问题。请帮助我。非常感谢您的帮助。
答案 0 :(得分: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(即使内容在脚本循环之后,并且看起来好像是仅在调用之后才调用length)循环执行)。相反,请确保在整个循环中都按照解决方案中的说明调用display数组方法。
希望这是正确的方法。如果我在某个地方错了,请纠正我。