Necesito ayuda con una tarea de JavaScript. ¿Cómo obtengo una consulta específica de dos bases de datos?
Tarea: Ver el archivo index.js Implementar la función gradeOverview(), que obtiene las variables estudiantes y calificaciones y crea una descripción general de calificaciones para cada estudiante. Por lo tanto, cada elemento de la matriz de estudiantes debe proyectarse en un objeto con el siguiente formato: { estudiante: (estudiantes[i]), calificaciones: [(calificaciones[j], calificaciones[j+k], ...)] }
Esta es mi función que accede a ambas bases de datos y debe recuperar y mostrar un valor de una base de datos a la vez según el "número de estudiante".
function gradeOverview(students, grades) { const result = students.map((student) => [ { student: student, grade: grades.reduce((grades, grade) => { const student number = grade.studentnumber; if (grades[matriculationnumber] == null) grades[matriculationnumber] = []; grades[matriculationnumber].push(grade); return grades; }), }, ]); console.log(result); return result; // TODO: implement me }Los datos:
var students = [{ "matrikelnummer": 4636, "vorname": "Vérane", "nachname": "Voase" }] var grades = [{ "id": 628, "matrikelnummer": 4636, "grade": "3,3" }, { "id": 886, "matrikelnummer": 4636, "grade": "5,0" }]Producción:
"student": { "matrikelnummer": 4636, "vorname": "Vérane", "nachname": "Voase" }, "grades": [ { "id": 628, "matrikelnummer": 4636, "grade": "3,3" }, { "id": 886, "matrikelnummer": 4636 "grade": "3,6" } ] },Actualizado: enlace de violín https://jsfiddle.net/uzrodex3/
Espero haber adivinado correctamente los datos entrantes que puso en la función gradeOverview.
const studentsQueryResponse = [ { name: "John Doe", studentNumber: 123 }, { name: "Johan Doe", studentNumber: 321 }, { name: "Jane Doe", studentNumber: 111 } ] const gradesQueryResponse = [ { studentNumber: 123, grade: 1 }, { studentNumber: 123, grade: 3 }, { studentNumber: 321, grade: 5 }, { studentNumber: 123, grade: 1 } ]No es su función que devuelve en este caso
[ { "student": { "name":"John Doe", "studentNumber":123 }, "grade":[1,3,1] }, { "student": { "name":"Johan Doe", "studentNumber":321 }, "grade":[5] }, { "student": { "name":"Jane Doe", "studentNumber":111 }, "grade":[] } ] Si desea devolver el objeto de grade completo en la matriz, simplemente elimine la línea del map que devuelve el valor de la propiedad de calificación del objeto de calificación
function gradeOverview(students, grades) { console.log("Input arguments", students, grades) const results = students.map((student) => { return { student: student, grade: grades .filter((gradeObject) => gradeObject.studentNumber === student.studentNumber) .map((gradeObject) => gradeObject.grade) } }); console.log("Results", results); return results; }Y luego llamas a tu función
gradeOverview(studenstQueryResponse, gradesQueryResponse)