gpt4 book ai didi

javascript - 推送在 firebase 监听器内不起作用

转载 作者:行者123 更新时间:2023-12-03 00:50:30 24 4
gpt4 key购买 nike

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 循环内执行推送操作后,长度也显示为零在上一个代码块中。这里出了什么问题。请帮助我。非常感谢您的帮助。

最佳答案

<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)执行循环)。而是在确保整个循环完成后调用显示数组方法,如解决方案中所示。

希望这是正确的方法。如果有说的不对的地方,请指正。

关于javascript - 推送在 firebase 监听器内不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53065912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com