Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

195
Visualizações
Después de crear una matriz, no puede acceder a ningún dato que contenga. vue javascript + firebase aunque no parece un problema de sincronización

Tengo una función ( createList() ) que crea una matriz a partir de los valores de la base de datos de Firebase y una función que publica la matriz como un objeto HTML ( postList() ).

La matriz que devuelve parece estar bien (ver "matriz devuelta" a continuación) durante la depuración ( console.log(array) ) y puedo ver los valores en el depurador que se muestran correctamente, pero array[0] devuelve "indefinido" y array.length devuelve "0", por lo que no se muestra la lista. ¿Alguna solución?

 async createList(){ var composedArray = []; const id = document.getElementById('joinCode').innerHTML; var player_count = null; firebase.database().ref('lobbies/' + id + '/playerCount/').once('value', (snapshot) => { const data = snapshot.val(); player_count = data; }).then(function() { for(var i = 1; i <= player_count; i++){ var iStr = String(i); const player_names_snapshot = firebase.database().ref('lobbies/' + id + '/players/' + iStr); player_names_snapshot.once('value', (snapshot) => { const data = snapshot.val(); composedArray.push(data); }); } }); return composedArray; },
 async postList(array){ console.log(array); console.log(array[0]); var list = document.createElement('ul'); for(let i = 0; i < array.length; i++){ var item = document.createElement('li'); item.appendChild(document.createTextNode(array[i])); list.appendChild(item); } const listContainer = document.getElementById('listWrap_players'); this.removeAllChildNodes(listContainer); return list; },

La función que llama a estas funciones:

 async mountedCall(){ var composedArray = []; composedArray = await this.createList(); document.getElementById('listWrap_players').appendChild(await this.postList(composedArray)); },

Matriz devuelta + imagen del depurador en luz: https://prnt.sc/23q4jra

Lo primero que pensé fue que mi "matriz" no es en realidad una matriz y que tal vez he creado un objeto diferente, pero no podía entender por qué, y esto funcionó bien antes de comenzar a migrar la aplicación de Firestore a Realtime. base de datos, así que estoy un poco perdido.

El problema no está en los valores devueltos por la base de datos. Los valores se cargan en la matriz correctamente y a tiempo (la array de parámetros tiene un valor cuando se llama a postList() (como lo demuestra la ejecución correcta de console.log(array) ), pero los valores en la matriz, aunque están allí (ver imagen del depurador) no se puede alcanzar de la manera habitual, a través de un índice ( array[x] ) ni .length devuelve la longitud de la matriz.

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda