Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

313
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!