<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 вызывается еще до того, как данные извлекаются из базы данных (даже если содержимое находится после цикла в скрипте и выглядит так, как будто длина вызывается только после цикл выполняется). Вместо этого вызовите метод массива отображения после того, как весь цикл будет гарантированно завершен, как в решении.
Надеюсь, что это правильный путь. Если я где-то ошибаюсь, поправьте меня.