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

308
Visualizações
¿Cómo agregar Promise .then() a Array.push?

Sin embargo, tengo una matriz, uno de los objetos secundarios necesita obtener datos de otra ubicación en mi base de datos de Firebase para mostrarlos en la matriz. Esto requiere una Promesa.

¿Cómo muestro los datos de la Promesa en la matriz?

 getListofReferrers() { // // // Getting list of referrers from Firebase. this.eventData.getReferrersList().on('value', snapshot => { let rawList98 = []; snapshot.forEach(snap => { // Bringing the information over into a local array to show on the page. rawList98.unshift({ id: snap.key, text: this.eventData.getOtherNameExternal(snap.val().userid).then( (v)=> {return v}), userid: snap.val().userid, username: snap.val().username, email: snap.val().useremail, referralPoints: this.eventData.numberWithCommas(this.eventData.getOtherProfileProperty(snap.val().userid, "referralPoints") || 0), }); }) // Taking the information into a "this." variable this.referralList = rawList98; console.log(this.referralList); }); }

Sigo recibiendo: [promesa de objeto] cuando muestro el valor de "nombre de usuario".

En consola.log(rawList98); sin embargo, obtengo lo siguiente:

 email: "pjoc@pjaguar.com" id: "referrer9OxMTyUDfiXrLp9O65XW0hUbHgH2" referralPoints: "0" username: t __zone_symbol__state: true __zone_symbol__value: "John Doe" [[Prototype]]: Object userid: "9OxMTyUDfiXrLp9O65XW0hUbHgH2"

¿Cómo es que muestra el valor recibido de la Promesa pero no puedo capturar eso en .then() para asignarlo correctamente al "nombre de usuario" secundario? Tendré que llamar a esta promesa para obtener el nombre de usuario de cada nodo en la base de datos de Firebase.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Dado que debe esperar a que el nombre de usuario esté disponible antes de poder construir el objeto, debe colocar el código dentro de .then :

 this.eventData.getUserName(snap.val().userid).then(v => { rawList98.unshift({ id: snap.key, username: v, userid: snap.val().userid, email: snap.val().useremail }); })

O, usando async/await:

 async function someFunction () { const v = await this.eventData.getUserName(snap.val().userid); rawList98.unshift({ id: snap.key, username: v, userid: snap.val().userid, email: snap.val().useremail }); }
about 4 years ago · Juan Pablo Isaza Relatório

0

La propiedad de nombre de username que está insertando en la matriz es una promesa. Entonces, para obtener el valor real allí, debe usar then o await :

 const user = rawList98.shift(); const username = await user.username; console.log(username);
about 4 years ago · Juan Pablo Isaza Relatório

0

Gracias a Frank van Puffelen. Aquí estaba la solución a mi problema: tuve que poner unshift() en una variable para obtener el índice y usarlo para asignar el nombre de username secundario después. Yo uso rawList98.length-user ya que la función unshift está agregando datos en la parte inferior, no en la parte superior.

 getListofReferrers() { // Getting list of referrers from Firebase. this.eventData.getReferrersList().on('value', snapshot => { let rawList98 = []; snapshot.forEach(snap => { var user user = rawList98.unshift({ id: snap.key, username: null, userid: snap.val().userid, email: snap.val().useremail, referralPoints: this.eventData.numberWithCommas(this.eventData.getOtherProfileProperty(snap.val().userid, "referralPoints") || 0), }); this.eventData.getOtherNameExternal(snap.val().userid).then( (v)=> { rawList98[rawList98.length-user].username = v}) }) // Taking the information into a "this." variable this.referralList = rawList98; console.log(this.referralList); }); }
about 4 years ago · Juan Pablo Isaza Relatório
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