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

231
Views
Genere contenido de tabla automática jspdf de la colección Firestore

Ya tengo un informe creado en jspdf con un autotable en su lugar. Será para enumerar algunos datos sobre un estudiante cuya fuente está en una colección en Firestore. Ya he hecho la referencia a la colección con:

 const ref = collection (“students”).doc(“selectedStudent”).collection(“grades”)

En esa colección habrá un número indefinido de documentos. Cada uno de ellos es un objeto con muchos datos que ya tengo en su lugar:

ingrese la descripción de la imagen aquí

De todos esos datos, solo usaría tres campos para llenar dinámicamente la tabla, por lo que el código de mi tabla sería el siguiente:

 doc.autoTable({ head: [['Subject', 'Teacher', 'Achievements']], body: [ ['Subject1', 'Teacher1', 'Lorem ipsum'], ['Subject2', 'Teacher2', 'Lorem ipsum'], // ... ], })

Sé que para lograrlo debo usar una función forEach o un bucle que recorra la colección, pero mi conocimiento es limitado y no sé cómo hacerlo. Esto es lo que he probado:

 let keys = ['asignatura', 'authorApellidos', 'logros']; let bodyData = [], i, j, rowData; for (i = 0; i < ref.length; i++) { rowData = []; for (j = 0; j < keys.length; ++j) { let key = keys [j]; rowData.push (ref [i][key]); } bodyData.push (rowData); } doc.autoTable({ head: [['Asignatura', 'Profesor', 'Descripción']], startY: 137, headStyles: { fillColor: [50, 205, 50] }, body: bodyData })

Sin embargo, tengo una tabla vacía donde solo veo la cabeza pero no hay datos.

Cuando hago un console.log(ref) lo que puedo ver en la consola es:

ingrese la descripción de la imagen aquí

Tal vez los datos provenientes de Firebase deban formatearse. No sé.

Agradeceré cualquier ayuda. ¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

puede usar .map para transformar cada elemento de una matriz en una matriz con la misma longitud y un formato de datos diferente

ejemplo:

 doc.autoTable({ head: [['Subject', 'Teacher', 'Achievements']], body: ref.map(object => { return [object.subject, object.teacher, object.achievements]; }), });

o desestructurar el objeto de la siguiente manera:

 doc.autoTable({ head: [["Subject", "Teacher", "Achievements"]], body: ref.map(({subject, teacher, achievements}) => { // <-- object destructuration return [subject, teacher, achievements]; }), });

dado que esta función de map está devolviendo un nuevo formato directamente, puede omitir el retorno y hacer una sola línea

 doc.autoTable({ head: [["Subject", "Teacher", "Achievements"]], body: ref.map(({subject, teacher, achievements}) => [subject, teacher, achievements]), });
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!